diff --git a/.buckconfig b/.buckconfig
deleted file mode 100644
index 934256c..0000000
--- a/.buckconfig
+++ /dev/null
@@ -1,6 +0,0 @@
-
-[android]
-  target = Google Inc.:Google APIs:23
-
-[maven_repositories]
-  central = https://repo1.maven.org/maven2
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 7c28613..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,3 +0,0 @@
-# Windows files
-[*.bat]
-end_of_line = crlf
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index 40c6dcd..0000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
-  root: true,
-  extends: '@react-native-community',
-};
diff --git a/.flowconfig b/.flowconfig
deleted file mode 100644
index 315f274..0000000
--- a/.flowconfig
+++ /dev/null
@@ -1,66 +0,0 @@
-[ignore]
-; We fork some components by platform
-.*/*[.]android.js
-
-; Ignore "BUCK" generated dirs
-<PROJECT_ROOT>/\.buckd/
-
-; Ignore polyfills
-node_modules/react-native/Libraries/polyfills/.*
-
-; Flow doesn't support platforms
-.*/Libraries/Utilities/LoadingView.js
-
-[untyped]
-.*/node_modules/@react-native-community/cli/.*/.*
-
-[include]
-
-[libs]
-node_modules/react-native/interface.js
-node_modules/react-native/flow/
-
-[options]
-emoji=true
-
-esproposal.optional_chaining=enable
-esproposal.nullish_coalescing=enable
-
-exact_by_default=true
-
-module.file_ext=.js
-module.file_ext=.json
-module.file_ext=.ios.js
-
-munge_underscores=true
-
-module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
-module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'
-
-suppress_type=$FlowIssue
-suppress_type=$FlowFixMe
-suppress_type=$FlowFixMeProps
-suppress_type=$FlowFixMeState
-
-[lints]
-sketchy-null-number=warn
-sketchy-null-mixed=warn
-sketchy-number=warn
-untyped-type-import=warn
-nonstrict-import=warn
-deprecated-type=warn
-unsafe-getters-setters=warn
-unnecessary-invariant=warn
-signature-verification-failure=warn
-
-[strict]
-deprecated-type
-nonstrict-import
-sketchy-null
-unclear-type
-unsafe-getters-setters
-untyped-import
-untyped-type-import
-
-[version]
-^0.137.0
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 45a3dcb..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,3 +0,0 @@
-# Windows files should use crlf line endings
-# https://help.github.com/articles/dealing-with-line-endings/
-*.bat text eol=crlf
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index ad572e6..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,59 +0,0 @@
-# OSX
-#
-.DS_Store
-
-# Xcode
-#
-build/
-*.pbxuser
-!default.pbxuser
-*.mode1v3
-!default.mode1v3
-*.mode2v3
-!default.mode2v3
-*.perspectivev3
-!default.perspectivev3
-xcuserdata
-*.xccheckout
-*.moved-aside
-DerivedData
-*.hmap
-*.ipa
-*.xcuserstate
-
-# Android/IntelliJ
-#
-build/
-.idea
-.gradle
-local.properties
-*.iml
-
-# node.js
-#
-node_modules/
-npm-debug.log
-yarn-error.log
-
-# BUCK
-buck-out/
-\.buckd/
-*.keystore
-!debug.keystore
-
-# fastlane
-#
-# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
-# screenshots whenever they are needed.
-# For more information about the recommended setup visit:
-# https://docs.fastlane.tools/best-practices/source-control/
-
-*/fastlane/report.xml
-*/fastlane/Preview.html
-*/fastlane/screenshots
-
-# Bundle artifact
-*.jsbundle
-
-# CocoaPods
-/ios/Pods/
diff --git a/.prettierrc.js b/.prettierrc.js
deleted file mode 100644
index 394e94d..0000000
--- a/.prettierrc.js
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports = {
-  bracketSpacing: false,
-  jsxBracketSameLine: true,
-  singleQuote: true,
-  trailingComma: 'all',
-  arrowParens: 'avoid',
-  endOfLine: 'auto',
-};
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index 7a9dfa0..0000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    // Use IntelliSense to learn about possible attributes.
-    // Hover to view descriptions of existing attributes.
-    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
-    "version": "0.2.0",
-    "configurations": [
-        {
-            "type": "pwa-chrome",
-            "request": "launch",
-            "name": "Launch Chrome against localhost",
-            "url": "http://localhost:8080",
-            "webRoot": "${workspaceFolder}"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 494430d..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "editor.codeActionsOnSave": {
-        "source.fixAll.eslint": true
-    },
-    "search.exclude": {
-        "**/node_modules": false
-    },
-}
\ No newline at end of file
diff --git a/.vscode/snipsnap.code-snippets b/.vscode/snipsnap.code-snippets
deleted file mode 100644
index 2e5835f..0000000
--- a/.vscode/snipsnap.code-snippets
+++ /dev/null
@@ -1 +0,0 @@
-{"prop-types-import-6c2a25c":{"prefix":["prop-types import","impt"],"body":["import PropTypes from 'prop-types'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"prop-type-array-35c96ee":{"prefix":["prop-types array","pta"],"body":["PropTypes.array,"],"description":"Array prop type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-array-required-8469a11":{"prefix":["prop-types array required","ptar"],"body":["PropTypes.array.isRequired,"],"description":"Array prop type required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-bool-a3ca932":{"prefix":["prop-types bool","ptb"],"body":["PropTypes.bool,"],"description":"Bool prop type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-bool-required-9cab693":{"prefix":["prop-types bool required","ptbr"],"body":["PropTypes.bool.isRequired,"],"description":"Bool prop type required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-func-e77249d":{"prefix":["prop-types func","ptf"],"body":["PropTypes.func,"],"description":"Func prop type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-func-required-4eebc4d":{"prefix":["prop-types func required","ptfr"],"body":["PropTypes.func.isRequired,"],"description":"Func prop type required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-number-2d479a5":{"prefix":["prop-types number","ptn"],"body":["PropTypes.number,"],"description":"Number prop type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-number-required-24d8887":{"prefix":["prop-types number required","ptnr"],"body":["PropTypes.number.isRequired,"],"description":"Number prop type required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-object-979a210":{"prefix":["prop-types object","pto"],"body":["PropTypes.object,"],"description":"Object prop type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-object-required-b021446":{"prefix":["prop-types object required","ptor"],"body":["PropTypes.object.isRequired,"],"description":"Object prop type required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-string-6cc460d":{"prefix":["prop-types string","pts"],"body":["PropTypes.string,"],"description":"String prop type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-string-required-7645177":{"prefix":["prop-types string required","ptsr"],"body":["PropTypes.string.isRequired,"],"description":"String prop type required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-node-b611d35":{"prefix":["prop-types node","ptnd"],"body":["PropTypes.node,"],"description":"Anything that can be rendered: numbers, strings, elements or an array","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-node-required-3d32fbc":{"prefix":["prop-types node required","ptndr"],"body":["PropTypes.node.isRequired,"],"description":"Anything that can be rendered: numbers, strings, elements or an array required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-element-4e9e2a1":{"prefix":["prop-types element","ptel"],"body":["PropTypes.element,"],"description":"React element prop type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-element-required-def7c12":{"prefix":["prop-types element required","ptelr"],"body":["PropTypes.element.isRequired,"],"description":"React element prop type required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-instance-of-be31edc":{"prefix":["prop-types instanceof","pti"],"body":["PropTypes.instanceOf($0),"],"description":"Is an instance of a class prop type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-instance-of-required-d21bf2a":{"prefix":["prop-types instanceof required","ptir"],"body":["PropTypes.instanceOf($0).isRequired,"],"description":"Is an instance of a class prop type required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-enum-9e4b40b":{"prefix":["prop-types enum","pte"],"body":["PropTypes.oneOf(['$0']),"],"description":"Prop type limited to specific values by treating it as an enum","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-enum-required-c939afc":{"prefix":["prop-types enum required","pter"],"body":["PropTypes.oneOf(['$0']).isRequired,"],"description":"Prop type limited to specific values by treating it as an enum required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-one-of-type-51d1b74":{"prefix":["prop-types oneoftype","ptet"],"body":["PropTypes.oneOfType([","\t$0","]),"],"description":"An object that could be one of many types","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-one-of-type-required-c4a4e06":{"prefix":["prop-types oneoftype required","ptetr"],"body":["PropTypes.oneOfType([","\t$0","]).isRequired,"],"description":"An object that could be one of many types required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-array-of-c20b6d6":{"prefix":["prop-types arrayof","ptao"],"body":["PropTypes.arrayOf($0),"],"description":"An array of a certain type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-array-of-required-eee203b":{"prefix":["prop-types arrayof required","ptaor"],"body":["PropTypes.arrayOf($0).isRequired,"],"description":"An array of a certain type required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-object-of-c674710":{"prefix":["prop-types objectof","ptoo"],"body":["PropTypes.objectOf($0),"],"description":"An object with property values of a certain type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-object-of-required-4832728":{"prefix":["prop-types objectof required","ptoor"],"body":["PropTypes.objectOf($0).isRequired,"],"description":"An object with property values of a certain type required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-shape-759e126":{"prefix":["prop-types shape","ptsh"],"body":["PropTypes.shape({","\t$0","}),"],"description":"An object taking on a particular shape","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-shape-required-bb383f3":{"prefix":["prop-types shape required","ptshr"],"body":["PropTypes.shape({","\t$0","}).isRequired,"],"description":"An object taking on a particular shape required","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-static-74a0b99":{"prefix":["prop-types static","ptypes"],"body":["static propTypes = {","$0","}",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"prop-type-any-d9dd9c4":{"prefix":["prop-types any","ptany"],"body":["PropTypes.any,"],"description":"Any prop type","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prop-type-init-f6f216e":{"prefix":["prop-types init"],"body":["${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}.propTypes = {"," ${2:property}: ${3:PropTypes.node.isRequired},","}"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"lodash-runincontext-52c4843":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash runincontext"],"body":["_.runInContext(${context})"],"description":"_.mixin({ 'foo': _.constant('foo') });\n\nvar lodash = _.runInContext();\nlodash.mixin({ 'bar': lodash.constant('bar') });\n\n_.isFunction(_.foo);\n// => true\n_.isFunction(_.bar);\n// => false\n\nlodash.isFunction(lodash.foo);\n// => false\nlodash.isFunction(lodash.bar);\n// => true\n\n// Create a suped-up `defer` in Node.js.\nvar defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n\nCreate a new pristine `lodash` function using the `context` object."},"lodash-chunk-a28a8a6":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash chunk"],"body":["_.chunk(${array}, ${size})"],"description":"_.chunk(['a', 'b', 'c', 'd'], 2);\n// => [['a', 'b'], ['c', 'd']]\n\n_.chunk(['a', 'b', 'c', 'd'], 3);\n// => [['a', 'b', 'c'], ['d']]\n\nCreates an array of elements split into groups the length of `size`.\nIf `array` can't be split evenly, the final chunk will be the remaining\nelements."},"lodash-compact-dc15555":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash compact"],"body":["_.compact(${array})"],"description":"_.compact([0, 1, false, 2, '', 3]);\n// => [1, 2, 3]\n\nCreates an array with all falsey values removed. The values `false`, `null`,\n`0`, `\"\"`, `undefined`, and `NaN` are falsey."},"lodash-concat-74ee3e2":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash concat"],"body":["_.concat(${array}, ${values})"],"description":"var array = [1];\nvar other = _.concat(array, 2, [3], [[4]]);\n\nconsole.log(other);\n// => [1, 2, 3, [4]]\n\nconsole.log(array);\n// => [1]\n\nCreates a new array concatenating `array` with any additional arrays\nand/or values."},"lodash-difference-8d72b56":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash difference"],"body":["_.difference(${array}, ${values})"],"description":"_.difference([2, 1], [2, 3]);\n// => [1]\n\nCreates an array of `array` values not included in the other given arrays\nusing [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\nfor equality comparisons. The order and references of result values are\ndetermined by the first array.\n\n**Note:** Unlike `_.pullAll`, this method returns a new array."},"lodash-differenceby-9911827":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash differenceby"],"body":["_.differenceBy(${array}, ${values}, ${iteratee})"],"description":"_.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n// => [1.2]\n\n// The `_.property` iteratee shorthand.\n_.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n// => [{ 'x': 2 }]\n\nThis method is like `_.difference` except that it accepts `iteratee` which\nis invoked for each element of `array` and `values` to generate the criterion\nby which they're compared. The order and references of result values are\ndetermined by the first array. The iteratee is invoked with one argument:\n(value).\n\n**Note:** Unlike `_.pullAllBy`, this method returns a new array."},"lodash-differencewith-7fc73aa":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash differencewith"],"body":["_.differenceWith(${array}, ${values}, ${comparator})"],"description":"var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n\n_.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n// => [{ 'x': 2, 'y': 1 }]\n\nThis method is like `_.difference` except that it accepts `comparator`\nwhich is invoked to compare elements of `array` to `values`. The order and\nreferences of result values are determined by the first array. The comparator\nis invoked with two arguments: (arrVal, othVal).\n\n**Note:** Unlike `_.pullAllWith`, this method returns a new array."},"lodash-drop-7e47270":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash drop"],"body":["_.drop(${array}, ${n})"],"description":"_.drop([1, 2, 3]);\n// => [2, 3]\n\n_.drop([1, 2, 3], 2);\n// => [3]\n\n_.drop([1, 2, 3], 5);\n// => []\n\n_.drop([1, 2, 3], 0);\n// => [1, 2, 3]\n\nCreates a slice of `array` with `n` elements dropped from the beginning."},"lodash-dropright-7f9f89d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash dropright"],"body":["_.dropRight(${array}, ${n})"],"description":"_.dropRight([1, 2, 3]);\n// => [1, 2]\n\n_.dropRight([1, 2, 3], 2);\n// => [1]\n\n_.dropRight([1, 2, 3], 5);\n// => []\n\n_.dropRight([1, 2, 3], 0);\n// => [1, 2, 3]\n\nCreates a slice of `array` with `n` elements dropped from the end."},"lodash-droprightwhile-5dfd2ad":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash droprightwhile"],"body":["_.dropRightWhile(${array}, ${predicate})"],"description":"var users = [\n  { 'user': 'barney',  'active': true },\n  { 'user': 'fred',    'active': false },\n  { 'user': 'pebbles', 'active': false }\n];\n\n_.dropRightWhile(users, function(o) { return !o.active; });\n// => objects for ['barney']\n\n// The `_.matches` iteratee shorthand.\n_.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n// => objects for ['barney', 'fred']\n\n// The `_.matchesProperty` iteratee shorthand.\n_.dropRightWhile(users, ['active', false]);\n// => objects for ['barney']\n\n// The `_.property` iteratee shorthand.\n_.dropRightWhile(users, 'active');\n// => objects for ['barney', 'fred', 'pebbles']\n\nCreates a slice of `array` excluding elements dropped from the end.\nElements are dropped until `predicate` returns falsey. The predicate is\ninvoked with three arguments: (value, index, array)."},"lodash-dropwhile-b3d48f3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash dropwhile"],"body":["_.dropWhile(${array}, ${predicate})"],"description":"var users = [\n  { 'user': 'barney',  'active': false },\n  { 'user': 'fred',    'active': false },\n  { 'user': 'pebbles', 'active': true }\n];\n\n_.dropWhile(users, function(o) { return !o.active; });\n// => objects for ['pebbles']\n\n// The `_.matches` iteratee shorthand.\n_.dropWhile(users, { 'user': 'barney', 'active': false });\n// => objects for ['fred', 'pebbles']\n\n// The `_.matchesProperty` iteratee shorthand.\n_.dropWhile(users, ['active', false]);\n// => objects for ['pebbles']\n\n// The `_.property` iteratee shorthand.\n_.dropWhile(users, 'active');\n// => objects for ['barney', 'fred', 'pebbles']\n\nCreates a slice of `array` excluding elements dropped from the beginning.\nElements are dropped until `predicate` returns falsey. The predicate is\ninvoked with three arguments: (value, index, array)."},"lodash-fill-d1349e3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash fill"],"body":["_.fill(${array}, ${value}, ${start}, ${end})"],"description":"var array = [1, 2, 3];\n\n_.fill(array, 'a');\nconsole.log(array);\n// => ['a', 'a', 'a']\n\n_.fill(Array(3), 2);\n// => [2, 2, 2]\n\n_.fill([4, 6, 8, 10], '*', 1, 3);\n// => [4, '*', '*', 10]\n\nFills elements of `array` with `value` from `start` up to, but not\nincluding, `end`.\n\n**Note:** This method mutates `array`."},"lodash-findindex-c4cbb0a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash findindex"],"body":["_.findIndex(${array}, ${predicate}, ${fromIndex})"],"description":"var users = [\n  { 'user': 'barney',  'active': false },\n  { 'user': 'fred',    'active': false },\n  { 'user': 'pebbles', 'active': true }\n];\n\n_.findIndex(users, function(o) { return o.user == 'barney'; });\n// => 0\n\n// The `_.matches` iteratee shorthand.\n_.findIndex(users, { 'user': 'fred', 'active': false });\n// => 1\n\n// The `_.matchesProperty` iteratee shorthand.\n_.findIndex(users, ['active', false]);\n// => 0\n\n// The `_.property` iteratee shorthand.\n_.findIndex(users, 'active');\n// => 2\n\nThis method is like `_.find` except that it returns the index of the first\nelement `predicate` returns truthy for instead of the element itself."},"lodash-findlastindex-a9ee87a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash findlastindex"],"body":["_.findLastIndex(${array}, ${predicate}, ${fromIndex})"],"description":"var users = [\n  { 'user': 'barney',  'active': true },\n  { 'user': 'fred',    'active': false },\n  { 'user': 'pebbles', 'active': false }\n];\n\n_.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n// => 2\n\n// The `_.matches` iteratee shorthand.\n_.findLastIndex(users, { 'user': 'barney', 'active': true });\n// => 0\n\n// The `_.matchesProperty` iteratee shorthand.\n_.findLastIndex(users, ['active', false]);\n// => 2\n\n// The `_.property` iteratee shorthand.\n_.findLastIndex(users, 'active');\n// => 0\n\nThis method is like `_.findIndex` except that it iterates over elements\nof `collection` from right to left."},"lodash-flatten-9c990e3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash flatten"],"body":["_.flatten(${array})"],"description":"_.flatten([1, [2, [3, [4]], 5]]);\n// => [1, 2, [3, [4]], 5]\n\nFlattens `array` a single level deep."},"lodash-flattendeep-a07047f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash flattendeep"],"body":["_.flattenDeep(${array})"],"description":"_.flattenDeep([1, [2, [3, [4]], 5]]);\n// => [1, 2, 3, 4, 5]\n\nRecursively flattens `array`."},"lodash-flattendepth-7a70fa9":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash flattendepth"],"body":["_.flattenDepth(${array}, ${depth})"],"description":"var array = [1, [2, [3, [4]], 5]];\n\n_.flattenDepth(array, 1);\n// => [1, 2, [3, [4]], 5]\n\n_.flattenDepth(array, 2);\n// => [1, 2, 3, [4], 5]\n\nRecursively flatten `array` up to `depth` times."},"lodash-frompairs-8d75451":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash frompairs"],"body":["_.fromPairs(${pairs})"],"description":"_.fromPairs([['a', 1], ['b', 2]]);\n// => { 'a': 1, 'b': 2 }\n\nThe inverse of `_.toPairs`; this method returns an object composed\nfrom key-value `pairs`."},"lodash-first-d539caa":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash first"],"body":["_.first(${array})"],"description":"_.head([1, 2, 3]);\n// => 1\n\n_.head([]);\n// => undefined\n\nGets the first element of `array`."},"lodash-indexof-acb78c9":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash indexof"],"body":["_.indexOf(${array}, ${value}, ${fromIndex})"],"description":"_.indexOf([1, 2, 1, 2], 2);\n// => 1\n\n// Search from the `fromIndex`.\n_.indexOf([1, 2, 1, 2], 2, 2);\n// => 3\n\nGets the index at which the first occurrence of `value` is found in `array`\nusing [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\nfor equality comparisons. If `fromIndex` is negative, it's used as the\noffset from the end of `array`."},"lodash-initial-79d48ce":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash initial"],"body":["_.initial(${array})"],"description":"_.initial([1, 2, 3]);\n// => [1, 2]\n\nGets all but the last element of `array`."},"lodash-intersection-ac140cd":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash intersection"],"body":["_.intersection(${arrays})"],"description":"_.intersection([2, 1], [2, 3]);\n// => [2]\n\nCreates an array of unique values that are included in all given arrays\nusing [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\nfor equality comparisons. The order and references of result values are\ndetermined by the first array."},"lodash-intersectionby-0c7802e":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash intersectionby"],"body":["_.intersectionBy(${arrays}, ${iteratee})"],"description":"_.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n// => [2.1]\n\n// The `_.property` iteratee shorthand.\n_.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n// => [{ 'x': 1 }]\n\nThis method is like `_.intersection` except that it accepts `iteratee`\nwhich is invoked for each element of each `arrays` to generate the criterion\nby which they're compared. The order and references of result values are\ndetermined by the first array. The iteratee is invoked with one argument:\n(value)."},"lodash-intersectionwith-646868a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash intersectionwith"],"body":["_.intersectionWith(${arrays}, ${comparator})"],"description":"var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\nvar others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n\n_.intersectionWith(objects, others, _.isEqual);\n// => [{ 'x': 1, 'y': 2 }]\n\nThis method is like `_.intersection` except that it accepts `comparator`\nwhich is invoked to compare elements of `arrays`. The order and references\nof result values are determined by the first array. The comparator is\ninvoked with two arguments: (arrVal, othVal)."},"lodash-join-1a4d3ae":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash join"],"body":["_.join(${array}, ${separator})"],"description":"_.join(['a', 'b', 'c'], '~');\n// => 'a~b~c'\n\nConverts all elements in `array` into a string separated by `separator`."},"lodash-last-520e3b4":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash last"],"body":["_.last(${array})"],"description":"_.last([1, 2, 3]);\n// => 3\n\nGets the last element of `array`."},"lodash-lastindexof-56011fa":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash lastindexof"],"body":["_.lastIndexOf(${array}, ${value}, ${fromIndex})"],"description":"_.lastIndexOf([1, 2, 1, 2], 2);\n// => 3\n\n// Search from the `fromIndex`.\n_.lastIndexOf([1, 2, 1, 2], 2, 2);\n// => 1\n\nThis method is like `_.indexOf` except that it iterates over elements of\n`array` from right to left."},"lodash-nth-043cb30":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash nth"],"body":["_.nth(${array}, ${n})"],"description":"var array = ['a', 'b', 'c', 'd'];\n\n_.nth(array, 1);\n// => 'b'\n\n_.nth(array, -2);\n// => 'c';\n\nGets the element at index `n` of `array`. If `n` is negative, the nth\nelement from the end is returned."},"lodash-pull-347954f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash pull"],"body":["_.pull(${array}, ${values})"],"description":"var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n\n_.pull(array, 'a', 'c');\nconsole.log(array);\n// => ['b', 'b']\n\nRemoves all given values from `array` using\n[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\nfor equality comparisons.\n\n**Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\nto remove elements from an array by predicate."},"lodash-pullall-8f81b65":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash pullall"],"body":["_.pullAll(${array}, ${values})"],"description":"var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n\n_.pullAll(array, ['a', 'c']);\nconsole.log(array);\n// => ['b', 'b']\n\nThis method is like `_.pull` except that it accepts an array of values to remove.\n\n**Note:** Unlike `_.difference`, this method mutates `array`."},"lodash-pullallby-37dce9c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash pullallby"],"body":["_.pullAllBy(${array}, ${values}, ${iteratee})"],"description":"var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n\n_.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\nconsole.log(array);\n// => [{ 'x': 2 }]\n\nThis method is like `_.pullAll` except that it accepts `iteratee` which is\ninvoked for each element of `array` and `values` to generate the criterion\nby which they're compared. The iteratee is invoked with one argument: (value).\n\n**Note:** Unlike `_.differenceBy`, this method mutates `array`."},"lodash-pullallwith-5a723f9":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash pullallwith"],"body":["_.pullAllWith(${array}, ${values}, ${comparator})"],"description":"var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n\n_.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\nconsole.log(array);\n// => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n\nThis method is like `_.pullAll` except that it accepts `comparator` which\nis invoked to compare elements of `array` to `values`. The comparator is\ninvoked with two arguments: (arrVal, othVal).\n\n**Note:** Unlike `_.differenceWith`, this method mutates `array`."},"lodash-pullat-c4b4576":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash pullat"],"body":["_.pullAt(${array}, ${indexes})"],"description":"var array = ['a', 'b', 'c', 'd'];\nvar pulled = _.pullAt(array, [1, 3]);\n\nconsole.log(array);\n// => ['a', 'c']\n\nconsole.log(pulled);\n// => ['b', 'd']\n\nRemoves elements from `array` corresponding to `indexes` and returns an\narray of removed elements.\n\n**Note:** Unlike `_.at`, this method mutates `array`."},"lodash-remove-4f5bf54":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash remove"],"body":["_.remove(${array}, ${predicate})"],"description":"var array = [1, 2, 3, 4];\nvar evens = _.remove(array, function(n) {\n  return n % 2 == 0;\n});\n\nconsole.log(array);\n// => [1, 3]\n\nconsole.log(evens);\n// => [2, 4]\n\nRemoves all elements from `array` that `predicate` returns truthy for\nand returns an array of the removed elements. The predicate is invoked\nwith three arguments: (value, index, array).\n\n**Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\nto pull elements from an array by value."},"lodash-reverse-c629bdb":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash reverse"],"body":["_.reverse()"],"description":"var array = [1, 2, 3];\n\n_(array).reverse().value()\n// => [3, 2, 1]\n\nconsole.log(array);\n// => [3, 2, 1]\n\nThis method is the wrapper version of `_.reverse`.\n\n**Note:** This method mutates the wrapped array."},"lodash-slice-724d2b2":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash slice"],"body":["_.slice(${array}, ${start}, ${end})"],"description":"undefined\n\nCreates a slice of `array` from `start` up to, but not including, `end`.\n\n**Note:** This method is used instead of\n[`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\nreturned."},"lodash-sortedindex-9a51253":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sortedindex"],"body":["_.sortedIndex(${array}, ${value})"],"description":"_.sortedIndex([30, 50], 40);\n// => 1\n\nUses a binary search to determine the lowest index at which `value`\nshould be inserted into `array` in order to maintain its sort order."},"lodash-sortedindexby-8099125":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sortedindexby"],"body":["_.sortedIndexBy(${array}, ${value}, ${iteratee})"],"description":"var objects = [{ 'x': 4 }, { 'x': 5 }];\n\n_.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n// => 0\n\n// The `_.property` iteratee shorthand.\n_.sortedIndexBy(objects, { 'x': 4 }, 'x');\n// => 0\n\nThis method is like `_.sortedIndex` except that it accepts `iteratee`\nwhich is invoked for `value` and each element of `array` to compute their\nsort ranking. The iteratee is invoked with one argument: (value)."},"lodash-sortedindexof-8102cc6":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sortedindexof"],"body":["_.sortedIndexOf(${array}, ${value})"],"description":"_.sortedIndexOf([4, 5, 5, 5, 6], 5);\n// => 1\n\nThis method is like `_.indexOf` except that it performs a binary\nsearch on a sorted `array`."},"lodash-sortedlastindex-ae7ca67":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sortedlastindex"],"body":["_.sortedLastIndex(${array}, ${value})"],"description":"_.sortedLastIndex([4, 5, 5, 5, 6], 5);\n// => 4\n\nThis method is like `_.sortedIndex` except that it returns the highest\nindex at which `value` should be inserted into `array` in order to\nmaintain its sort order."},"lodash-sortedlastindexby-5d6617b":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sortedlastindexby"],"body":["_.sortedLastIndexBy(${array}, ${value}, ${iteratee})"],"description":"var objects = [{ 'x': 4 }, { 'x': 5 }];\n\n_.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n// => 1\n\n// The `_.property` iteratee shorthand.\n_.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n// => 1\n\nThis method is like `_.sortedLastIndex` except that it accepts `iteratee`\nwhich is invoked for `value` and each element of `array` to compute their\nsort ranking. The iteratee is invoked with one argument: (value)."},"lodash-sortedlastindexof-3f94043":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sortedlastindexof"],"body":["_.sortedLastIndexOf(${array}, ${value})"],"description":"_.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n// => 3\n\nThis method is like `_.lastIndexOf` except that it performs a binary\nsearch on a sorted `array`."},"lodash-sorteduniq-944ab1e":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sorteduniq"],"body":["_.sortedUniq(${array})"],"description":"_.sortedUniq([1, 1, 2]);\n// => [1, 2]\n\nThis method is like `_.uniq` except that it's designed and optimized\nfor sorted arrays."},"lodash-sorteduniqby-f802aa1":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sorteduniqby"],"body":["_.sortedUniqBy(${array}, ${iteratee})"],"description":"_.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n// => [1.1, 2.3]\n\nThis method is like `_.uniqBy` except that it's designed and optimized\nfor sorted arrays."},"lodash-tail-39e66e2":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash tail"],"body":["_.tail(${array})"],"description":"_.tail([1, 2, 3]);\n// => [2, 3]\n\nGets all but the first element of `array`."},"lodash-take-2cc1d47":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash take"],"body":["_.take(${array}, ${n})"],"description":"_.take([1, 2, 3]);\n// => [1]\n\n_.take([1, 2, 3], 2);\n// => [1, 2]\n\n_.take([1, 2, 3], 5);\n// => [1, 2, 3]\n\n_.take([1, 2, 3], 0);\n// => []\n\nCreates a slice of `array` with `n` elements taken from the beginning."},"lodash-takeright-fe806e4":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash takeright"],"body":["_.takeRight(${array}, ${n})"],"description":"_.takeRight([1, 2, 3]);\n// => [3]\n\n_.takeRight([1, 2, 3], 2);\n// => [2, 3]\n\n_.takeRight([1, 2, 3], 5);\n// => [1, 2, 3]\n\n_.takeRight([1, 2, 3], 0);\n// => []\n\nCreates a slice of `array` with `n` elements taken from the end."},"lodash-takerightwhile-5ed58df":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash takerightwhile"],"body":["_.takeRightWhile(${array}, ${predicate})"],"description":"var users = [\n  { 'user': 'barney',  'active': true },\n  { 'user': 'fred',    'active': false },\n  { 'user': 'pebbles', 'active': false }\n];\n\n_.takeRightWhile(users, function(o) { return !o.active; });\n// => objects for ['fred', 'pebbles']\n\n// The `_.matches` iteratee shorthand.\n_.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n// => objects for ['pebbles']\n\n// The `_.matchesProperty` iteratee shorthand.\n_.takeRightWhile(users, ['active', false]);\n// => objects for ['fred', 'pebbles']\n\n// The `_.property` iteratee shorthand.\n_.takeRightWhile(users, 'active');\n// => []\n\nCreates a slice of `array` with elements taken from the end. Elements are\ntaken until `predicate` returns falsey. The predicate is invoked with\nthree arguments: (value, index, array)."},"lodash-takewhile-17dc3ee":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash takewhile"],"body":["_.takeWhile(${array}, ${predicate})"],"description":"var users = [\n  { 'user': 'barney',  'active': false },\n  { 'user': 'fred',    'active': false },\n  { 'user': 'pebbles', 'active': true }\n];\n\n_.takeWhile(users, function(o) { return !o.active; });\n// => objects for ['barney', 'fred']\n\n// The `_.matches` iteratee shorthand.\n_.takeWhile(users, { 'user': 'barney', 'active': false });\n// => objects for ['barney']\n\n// The `_.matchesProperty` iteratee shorthand.\n_.takeWhile(users, ['active', false]);\n// => objects for ['barney', 'fred']\n\n// The `_.property` iteratee shorthand.\n_.takeWhile(users, 'active');\n// => []\n\nCreates a slice of `array` with elements taken from the beginning. Elements\nare taken until `predicate` returns falsey. The predicate is invoked with\nthree arguments: (value, index, array)."},"lodash-union-2d53274":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash union"],"body":["_.union(${arrays})"],"description":"_.union([2], [1, 2]);\n// => [2, 1]\n\nCreates an array of unique values, in order, from all given arrays using\n[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\nfor equality comparisons."},"lodash-unionby-d3e875b":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash unionby"],"body":["_.unionBy(${arrays}, ${iteratee})"],"description":"_.unionBy([2.1], [1.2, 2.3], Math.floor);\n// => [2.1, 1.2]\n\n// The `_.property` iteratee shorthand.\n_.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n// => [{ 'x': 1 }, { 'x': 2 }]\n\nThis method is like `_.union` except that it accepts `iteratee` which is\ninvoked for each element of each `arrays` to generate the criterion by\nwhich uniqueness is computed. Result values are chosen from the first\narray in which the value occurs. The iteratee is invoked with one argument:\n(value)."},"lodash-unionwith-df0c033":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash unionwith"],"body":["_.unionWith(${arrays}, ${comparator})"],"description":"var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\nvar others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n\n_.unionWith(objects, others, _.isEqual);\n// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n\nThis method is like `_.union` except that it accepts `comparator` which\nis invoked to compare elements of `arrays`. Result values are chosen from\nthe first array in which the value occurs. The comparator is invoked\nwith two arguments: (arrVal, othVal)."},"lodash-uniq-70436a1":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash uniq"],"body":["_.uniq(${array})"],"description":"_.uniq([2, 1, 2]);\n// => [2, 1]\n\nCreates a duplicate-free version of an array, using\n[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\nfor equality comparisons, in which only the first occurrence of each element\nis kept. The order of result values is determined by the order they occur\nin the array."},"lodash-uniqby-e5b7f48":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash uniqby"],"body":["_.uniqBy(${array}, ${iteratee})"],"description":"_.uniqBy([2.1, 1.2, 2.3], Math.floor);\n// => [2.1, 1.2]\n\n// The `_.property` iteratee shorthand.\n_.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n// => [{ 'x': 1 }, { 'x': 2 }]\n\nThis method is like `_.uniq` except that it accepts `iteratee` which is\ninvoked for each element in `array` to generate the criterion by which\nuniqueness is computed. The order of result values is determined by the\norder they occur in the array. The iteratee is invoked with one argument:\n(value)."},"lodash-uniqwith-6057923":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash uniqwith"],"body":["_.uniqWith(${array}, ${comparator})"],"description":"var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n\n_.uniqWith(objects, _.isEqual);\n// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n\nThis method is like `_.uniq` except that it accepts `comparator` which\nis invoked to compare elements of `array`. The order of result values is\ndetermined by the order they occur in the array.The comparator is invoked\nwith two arguments: (arrVal, othVal)."},"lodash-unzip-1e7066a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash unzip"],"body":["_.unzip(${array})"],"description":"var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n// => [['a', 1, true], ['b', 2, false]]\n\n_.unzip(zipped);\n// => [['a', 'b'], [1, 2], [true, false]]\n\nThis method is like `_.zip` except that it accepts an array of grouped\nelements and creates an array regrouping the elements to their pre-zip\nconfiguration."},"lodash-unzipwith-8e145e3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash unzipwith"],"body":["_.unzipWith(${array}, ${iteratee})"],"description":"var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n// => [[1, 10, 100], [2, 20, 200]]\n\n_.unzipWith(zipped, _.add);\n// => [3, 30, 300]\n\nThis method is like `_.unzip` except that it accepts `iteratee` to specify\nhow regrouped values should be combined. The iteratee is invoked with the\nelements of each group: (...group)."},"lodash-without-aafde75":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash without"],"body":["_.without(${array}, ${values})"],"description":"_.without([2, 1, 2, 3], 1, 2);\n// => [3]\n\nCreates an array excluding all given values using\n[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\nfor equality comparisons.\n\n**Note:** Unlike `_.pull`, this method returns a new array."},"lodash-xor-59abfff":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash xor"],"body":["_.xor(${arrays})"],"description":"_.xor([2, 1], [2, 3]);\n// => [1, 3]\n\nCreates an array of unique values that is the\n[symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\nof the given arrays. The order of result values is determined by the order\nthey occur in the arrays."},"lodash-xorby-e1c6199":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash xorby"],"body":["_.xorBy(${arrays}, ${iteratee})"],"description":"_.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n// => [1.2, 3.4]\n\n// The `_.property` iteratee shorthand.\n_.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n// => [{ 'x': 2 }]\n\nThis method is like `_.xor` except that it accepts `iteratee` which is\ninvoked for each element of each `arrays` to generate the criterion by\nwhich by which they're compared. The order of result values is determined\nby the order they occur in the arrays. The iteratee is invoked with one\nargument: (value)."},"lodash-xorwith-e3d4ba3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash xorwith"],"body":["_.xorWith(${arrays}, ${comparator})"],"description":"var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\nvar others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n\n_.xorWith(objects, others, _.isEqual);\n// => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n\nThis method is like `_.xor` except that it accepts `comparator` which is\ninvoked to compare elements of `arrays`. The order of result values is\ndetermined by the order they occur in the arrays. The comparator is invoked\nwith two arguments: (arrVal, othVal)."},"lodash-zip-3e0c4d9":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash zip"],"body":["_.zip(${arrays})"],"description":"_.zip(['a', 'b'], [1, 2], [true, false]);\n// => [['a', 1, true], ['b', 2, false]]\n\nCreates an array of grouped elements, the first of which contains the\nfirst elements of the given arrays, the second of which contains the\nsecond elements of the given arrays, and so on."},"lodash-zipobject-41ab19b":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash zipobject"],"body":["_.zipObject(${props}, ${values})"],"description":"_.zipObject(['a', 'b'], [1, 2]);\n// => { 'a': 1, 'b': 2 }\n\nThis method is like `_.fromPairs` except that it accepts two arrays,\none of property identifiers and one of corresponding values."},"lodash-zipobjectdeep-8ebb581":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash zipobjectdeep"],"body":["_.zipObjectDeep(${props}, ${values})"],"description":"_.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n// => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n\nThis method is like `_.zipObject` except that it supports property paths."},"lodash-zipwith-7f20170":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash zipwith"],"body":["_.zipWith(${arrays}, ${iteratee})"],"description":"_.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n  return a + b + c;\n});\n// => [1, 222]\n\nThis method is like `_.zip` except that it accepts `iteratee` to specify\nhow grouped values should be combined. The iteratee is invoked with the\nelements of each group: (...group)."},"lodash-chain-108b95a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash chain"],"body":["_.chain()"],"description":"var users = [\n  { 'user': 'barney', 'age': 36 },\n  { 'user': 'fred',   'age': 40 }\n];\n\n// A sequence without explicit chaining.\n_(users).head();\n// => { 'user': 'barney', 'age': 36 }\n\n// A sequence with explicit chaining.\n_(users)\n  .chain()\n  .head()\n  .pick('user')\n  .value();\n// => { 'user': 'barney' }\n\nCreates a `lodash` wrapper instance with explicit method chain sequences enabled."},"lodash-tap-30b1e1a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash tap"],"body":["_.tap(${value}, ${interceptor})"],"description":"_([1, 2, 3])\n .tap(function(array) {\n   // Mutate input array.\n   array.pop();\n })\n .reverse()\n .value();\n// => [2, 1]\n\nThis method invokes `interceptor` and returns `value`. The interceptor\nis invoked with one argument; (value). The purpose of this method is to\n\"tap into\" a method chain sequence in order to modify intermediate results."},"lodash-thru-62f2120":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash thru"],"body":["_.thru(${value}, ${interceptor})"],"description":"_('  abc  ')\n .chain()\n .trim()\n .thru(function(value) {\n   return [value];\n })\n .value();\n// => ['abc']\n\nThis method is like `_.tap` except that it returns the result of `interceptor`.\nThe purpose of this method is to \"pass thru\" values replacing intermediate\nresults in a method chain sequence."},"lodash-at-3867082":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash at"],"body":["_.at(${object}, ${paths})"],"description":"var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n\n_.at(object, ['a[0].b.c', 'a[1]']);\n// => [3, 4]\n\nCreates an array of values corresponding to `paths` of `object`."},"lodash-commit-88eff62":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash commit"],"body":["_.commit()"],"description":"var array = [1, 2];\nvar wrapped = _(array).push(3);\n\nconsole.log(array);\n// => [1, 2]\n\nwrapped = wrapped.commit();\nconsole.log(array);\n// => [1, 2, 3]\n\nwrapped.last();\n// => 3\n\nconsole.log(array);\n// => [1, 2, 3]\n\nExecutes the chain sequence and returns the wrapped result."},"lodash-next-9a6c31c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash next"],"body":["_.next()"],"description":"var wrapped = _([1, 2]);\n\nwrapped.next();\n// => { 'done': false, 'value': 1 }\n\nwrapped.next();\n// => { 'done': false, 'value': 2 }\n\nwrapped.next();\n// => { 'done': true, 'value': undefined }\n\nGets the next value on a wrapped object following the\n[iterator protocol](https://mdn.io/iteration_protocols#iterator)."},"lodash-plant-62b02f6":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash plant"],"body":["_.plant(${value})"],"description":"function square(n) {\n  return n * n;\n}\n\nvar wrapped = _([1, 2]).map(square);\nvar other = wrapped.plant([3, 4]);\n\nother.value();\n// => [9, 16]\n\nwrapped.value();\n// => [1, 4]\n\nCreates a clone of the chain sequence planting `value` as the wrapped value."},"lodash-value-d6a46f6":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash value"],"body":["_.value()"],"description":"_([1, 2, 3]).value();\n// => [1, 2, 3]\n\nExecutes the chain sequence to resolve the unwrapped value."},"lodash-countby-9251b01":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash countby"],"body":["_.countBy(${collection}, ${iteratee})"],"description":"_.countBy([6.1, 4.2, 6.3], Math.floor);\n// => { '4': 1, '6': 2 }\n\n// The `_.property` iteratee shorthand.\n_.countBy(['one', 'two', 'three'], 'length');\n// => { '3': 2, '5': 1 }\n\nCreates an object composed of keys generated from the results of running\neach element of `collection` thru `iteratee`. The corresponding value of\neach key is the number of times the key was returned by `iteratee`. The\niteratee is invoked with one argument: (value)."},"lodash-every-59aded0":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash every"],"body":["_.every(${collection}, ${predicate})"],"description":"_.every([true, 1, null, 'yes'], Boolean);\n// => false\n\nvar users = [\n  { 'user': 'barney', 'age': 36, 'active': false },\n  { 'user': 'fred',   'age': 40, 'active': false }\n];\n\n// The `_.matches` iteratee shorthand.\n_.every(users, { 'user': 'barney', 'active': false });\n// => false\n\n// The `_.matchesProperty` iteratee shorthand.\n_.every(users, ['active', false]);\n// => true\n\n// The `_.property` iteratee shorthand.\n_.every(users, 'active');\n// => false\n\nChecks if `predicate` returns truthy for **all** elements of `collection`.\nIteration is stopped once `predicate` returns falsey. The predicate is\ninvoked with three arguments: (value, index|key, collection).\n\n**Note:** This method returns `true` for\n[empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n[everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\nelements of empty collections."},"lodash-filter-70d63df":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash filter"],"body":["_.filter(${collection}, ${predicate})"],"description":"var users = [\n  { 'user': 'barney', 'age': 36, 'active': true },\n  { 'user': 'fred',   'age': 40, 'active': false }\n];\n\n_.filter(users, function(o) { return !o.active; });\n// => objects for ['fred']\n\n// The `_.matches` iteratee shorthand.\n_.filter(users, { 'age': 36, 'active': true });\n// => objects for ['barney']\n\n// The `_.matchesProperty` iteratee shorthand.\n_.filter(users, ['active', false]);\n// => objects for ['fred']\n\n// The `_.property` iteratee shorthand.\n_.filter(users, 'active');\n// => objects for ['barney']\n\nIterates over elements of `collection`, returning an array of all elements\n`predicate` returns truthy for. The predicate is invoked with three\narguments: (value, index|key, collection).\n\n**Note:** Unlike `_.remove`, this method returns a new array."},"lodash-find-fcc258d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash find"],"body":["_.find(${collection}, ${predicate}, ${fromIndex})"],"description":"var users = [\n  { 'user': 'barney',  'age': 36, 'active': true },\n  { 'user': 'fred',    'age': 40, 'active': false },\n  { 'user': 'pebbles', 'age': 1,  'active': true }\n];\n\n_.find(users, function(o) { return o.age < 40; });\n// => object for 'barney'\n\n// The `_.matches` iteratee shorthand.\n_.find(users, { 'age': 1, 'active': true });\n// => object for 'pebbles'\n\n// The `_.matchesProperty` iteratee shorthand.\n_.find(users, ['active', false]);\n// => object for 'fred'\n\n// The `_.property` iteratee shorthand.\n_.find(users, 'active');\n// => object for 'barney'\n\nIterates over elements of `collection`, returning the first element\n`predicate` returns truthy for. The predicate is invoked with three\narguments: (value, index|key, collection)."},"lodash-findlast-8636139":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash findlast"],"body":["_.findLast(${collection}, ${predicate}, ${fromIndex})"],"description":"_.findLast([1, 2, 3, 4], function(n) {\n  return n % 2 == 1;\n});\n// => 3\n\nThis method is like `_.find` except that it iterates over elements of\n`collection` from right to left."},"lodash-flatmap-5ef15c4":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash flatmap"],"body":["_.flatMap(${collection}, ${iteratee})"],"description":"function duplicate(n) {\n  return [n, n];\n}\n\n_.flatMap([1, 2], duplicate);\n// => [1, 1, 2, 2]\n\nCreates a flattened array of values by running each element in `collection`\nthru `iteratee` and flattening the mapped results. The iteratee is invoked\nwith three arguments: (value, index|key, collection)."},"lodash-flatmapdeep-16ff88d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash flatmapdeep"],"body":["_.flatMapDeep(${collection}, ${iteratee})"],"description":"function duplicate(n) {\n  return [[[n, n]]];\n}\n\n_.flatMapDeep([1, 2], duplicate);\n// => [1, 1, 2, 2]\n\nThis method is like `_.flatMap` except that it recursively flattens the\nmapped results."},"lodash-flatmapdepth-9d34795":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash flatmapdepth"],"body":["_.flatMapDepth(${collection}, ${iteratee}, ${depth})"],"description":"function duplicate(n) {\n  return [[[n, n]]];\n}\n\n_.flatMapDepth([1, 2], duplicate, 2);\n// => [[1, 1], [2, 2]]\n\nThis method is like `_.flatMap` except that it recursively flattens the\nmapped results up to `depth` times."},"lodash-each-75cdedb":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash each"],"body":["_.each(${collection}, ${iteratee})"],"description":"_.forEach([1, 2], function(value) {\n  console.log(value);\n});\n// => Logs `1` then `2`.\n\n_.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n  console.log(key);\n});\n// => Logs 'a' then 'b' (iteration order is not guaranteed).\n\nIterates over elements of `collection` and invokes `iteratee` for each element.\nThe iteratee is invoked with three arguments: (value, index|key, collection).\nIteratee functions may exit iteration early by explicitly returning `false`.\n\n**Note:** As with other \"Collections\" methods, objects with a \"length\"\nproperty are iterated like arrays. To avoid this behavior use `_.forIn`\nor `_.forOwn` for object iteration."},"lodash-eachright-323f54f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash eachright"],"body":["_.eachRight(${collection}, ${iteratee})"],"description":"_.forEachRight([1, 2], function(value) {\n  console.log(value);\n});\n// => Logs `2` then `1`.\n\nThis method is like `_.forEach` except that it iterates over elements of\n`collection` from right to left."},"lodash-groupby-1c0c723":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash groupby"],"body":["_.groupBy(${collection}, ${iteratee})"],"description":"_.groupBy([6.1, 4.2, 6.3], Math.floor);\n// => { '4': [4.2], '6': [6.1, 6.3] }\n\n// The `_.property` iteratee shorthand.\n_.groupBy(['one', 'two', 'three'], 'length');\n// => { '3': ['one', 'two'], '5': ['three'] }\n\nCreates an object composed of keys generated from the results of running\neach element of `collection` thru `iteratee`. The order of grouped values\nis determined by the order they occur in `collection`. The corresponding\nvalue of each key is an array of elements responsible for generating the\nkey. The iteratee is invoked with one argument: (value)."},"lodash-includes-cd95ae4":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash includes"],"body":["_.includes(${collection}, ${value}, ${fromIndex})"],"description":"_.includes([1, 2, 3], 1);\n// => true\n\n_.includes([1, 2, 3], 1, 2);\n// => false\n\n_.includes({ 'a': 1, 'b': 2 }, 1);\n// => true\n\n_.includes('abcd', 'bc');\n// => true\n\nChecks if `value` is in `collection`. If `collection` is a string, it's\nchecked for a substring of `value`, otherwise\n[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\nis used for equality comparisons. If `fromIndex` is negative, it's used as\nthe offset from the end of `collection`."},"lodash-invokemap-d2a4852":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash invokemap"],"body":["_.invokeMap(${collection}, ${path}, ${args})"],"description":"_.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n// => [[1, 5, 7], [1, 2, 3]]\n\n_.invokeMap([123, 456], String.prototype.split, '');\n// => [['1', '2', '3'], ['4', '5', '6']]\n\nInvokes the method at `path` of each element in `collection`, returning\nan array of the results of each invoked method. Any additional arguments\nare provided to each invoked method. If `path` is a function, it's invoked\nfor, and `this` bound to, each element in `collection`."},"lodash-keyby-d7d9848":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash keyby"],"body":["_.keyBy(${collection}, ${iteratee})"],"description":"var array = [\n  { 'dir': 'left', 'code': 97 },\n  { 'dir': 'right', 'code': 100 }\n];\n\n_.keyBy(array, function(o) {\n  return String.fromCharCode(o.code);\n});\n// => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n\n_.keyBy(array, 'dir');\n// => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n\nCreates an object composed of keys generated from the results of running\neach element of `collection` thru `iteratee`. The corresponding value of\neach key is the last element responsible for generating the key. The\niteratee is invoked with one argument: (value)."},"lodash-map-39da26a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash map"],"body":["_.map(${collection}, ${iteratee})"],"description":"function square(n) {\n  return n * n;\n}\n\n_.map([4, 8], square);\n// => [16, 64]\n\n_.map({ 'a': 4, 'b': 8 }, square);\n// => [16, 64] (iteration order is not guaranteed)\n\nvar users = [\n  { 'user': 'barney' },\n  { 'user': 'fred' }\n];\n\n// The `_.property` iteratee shorthand.\n_.map(users, 'user');\n// => ['barney', 'fred']\n\nCreates an array of values by running each element in `collection` thru\n`iteratee`. The iteratee is invoked with three arguments:\n(value, index|key, collection).\n\nMany lodash methods are guarded to work as iteratees for methods like\n`_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n\nThe guarded methods are:\n`ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n`fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n`sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n`template`, `trim`, `trimEnd`, `trimStart`, and `words`"},"lodash-orderby-774fa76":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash orderby"],"body":["_.orderBy(${collection}, ${iteratees}, ${orders})"],"description":"var users = [\n  { 'user': 'fred',   'age': 48 },\n  { 'user': 'barney', 'age': 34 },\n  { 'user': 'fred',   'age': 40 },\n  { 'user': 'barney', 'age': 36 }\n];\n\n// Sort by `user` in ascending order and by `age` in descending order.\n_.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n\nThis method is like `_.sortBy` except that it allows specifying the sort\norders of the iteratees to sort by. If `orders` is unspecified, all values\nare sorted in ascending order. Otherwise, specify an order of \"desc\" for\ndescending or \"asc\" for ascending sort order of corresponding values."},"lodash-partition-8b69083":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash partition"],"body":["_.partition(${collection}, ${predicate})"],"description":"var users = [\n  { 'user': 'barney',  'age': 36, 'active': false },\n  { 'user': 'fred',    'age': 40, 'active': true },\n  { 'user': 'pebbles', 'age': 1,  'active': false }\n];\n\n_.partition(users, function(o) { return o.active; });\n// => objects for [['fred'], ['barney', 'pebbles']]\n\n// The `_.matches` iteratee shorthand.\n_.partition(users, { 'age': 1, 'active': false });\n// => objects for [['pebbles'], ['barney', 'fred']]\n\n// The `_.matchesProperty` iteratee shorthand.\n_.partition(users, ['active', false]);\n// => objects for [['barney', 'pebbles'], ['fred']]\n\n// The `_.property` iteratee shorthand.\n_.partition(users, 'active');\n// => objects for [['fred'], ['barney', 'pebbles']]\n\nCreates an array of elements split into two groups, the first of which\ncontains elements `predicate` returns truthy for, the second of which\ncontains elements `predicate` returns falsey for. The predicate is\ninvoked with one argument: (value)."},"lodash-reduce-580195c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash reduce"],"body":["_.reduce(${collection}, ${iteratee}, ${accumulator})"],"description":"_.reduce([1, 2], function(sum, n) {\n  return sum + n;\n}, 0);\n// => 3\n\n_.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n  (result[value] || (result[value] = [])).push(key);\n  return result;\n}, {});\n// => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n\nReduces `collection` to a value which is the accumulated result of running\neach element in `collection` thru `iteratee`, where each successive\ninvocation is supplied the return value of the previous. If `accumulator`\nis not given, the first element of `collection` is used as the initial\nvalue. The iteratee is invoked with four arguments:\n(accumulator, value, index|key, collection).\n\nMany lodash methods are guarded to work as iteratees for methods like\n`_.reduce`, `_.reduceRight`, and `_.transform`.\n\nThe guarded methods are:\n`assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\nand `sortBy`"},"lodash-reduceright-37aae99":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash reduceright"],"body":["_.reduceRight(${collection}, ${iteratee}, ${accumulator})"],"description":"var array = [[0, 1], [2, 3], [4, 5]];\n\n_.reduceRight(array, function(flattened, other) {\n  return flattened.concat(other);\n}, []);\n// => [4, 5, 2, 3, 0, 1]\n\nThis method is like `_.reduce` except that it iterates over elements of\n`collection` from right to left."},"lodash-reject-af8cef8":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash reject"],"body":["_.reject(${collection}, ${predicate})"],"description":"var users = [\n  { 'user': 'barney', 'age': 36, 'active': false },\n  { 'user': 'fred',   'age': 40, 'active': true }\n];\n\n_.reject(users, function(o) { return !o.active; });\n// => objects for ['fred']\n\n// The `_.matches` iteratee shorthand.\n_.reject(users, { 'age': 40, 'active': true });\n// => objects for ['barney']\n\n// The `_.matchesProperty` iteratee shorthand.\n_.reject(users, ['active', false]);\n// => objects for ['fred']\n\n// The `_.property` iteratee shorthand.\n_.reject(users, 'active');\n// => objects for ['barney']\n\nThe opposite of `_.filter`; this method returns the elements of `collection`\nthat `predicate` does **not** return truthy for."},"lodash-sample-6ea99b2":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sample"],"body":["_.sample(${collection})"],"description":"_.sample([1, 2, 3, 4]);\n// => 2\n\nGets a random element from `collection`."},"lodash-samplesize-cfeea05":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash samplesize"],"body":["_.sampleSize(${collection}, ${n})"],"description":"_.sampleSize([1, 2, 3], 2);\n// => [3, 1]\n\n_.sampleSize([1, 2, 3], 4);\n// => [2, 3, 1]\n\nGets `n` random elements at unique keys from `collection` up to the\nsize of `collection`."},"lodash-shuffle-d34af08":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash shuffle"],"body":["_.shuffle(${collection})"],"description":"_.shuffle([1, 2, 3, 4]);\n// => [4, 1, 3, 2]\n\nCreates an array of shuffled values, using a version of the\n[Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle)."},"lodash-size-dbc9cb8":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash size"],"body":["_.size(${collection})"],"description":"_.size([1, 2, 3]);\n// => 3\n\n_.size({ 'a': 1, 'b': 2 });\n// => 2\n\n_.size('pebbles');\n// => 7\n\nGets the size of `collection` by returning its length for array-like\nvalues or the number of own enumerable string keyed properties for objects."},"lodash-some-b992c70":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash some"],"body":["_.some(${collection}, ${predicate})"],"description":"_.some([null, 0, 'yes', false], Boolean);\n// => true\n\nvar users = [\n  { 'user': 'barney', 'active': true },\n  { 'user': 'fred',   'active': false }\n];\n\n// The `_.matches` iteratee shorthand.\n_.some(users, { 'user': 'barney', 'active': false });\n// => false\n\n// The `_.matchesProperty` iteratee shorthand.\n_.some(users, ['active', false]);\n// => true\n\n// The `_.property` iteratee shorthand.\n_.some(users, 'active');\n// => true\n\nChecks if `predicate` returns truthy for **any** element of `collection`.\nIteration is stopped once `predicate` returns truthy. The predicate is\ninvoked with three arguments: (value, index|key, collection)."},"lodash-sortby-89e2815":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sortby"],"body":["_.sortBy(${collection}, ${iteratees})"],"description":"var users = [\n  { 'user': 'fred',   'age': 48 },\n  { 'user': 'barney', 'age': 36 },\n  { 'user': 'fred',   'age': 40 },\n  { 'user': 'barney', 'age': 34 }\n];\n\n_.sortBy(users, [function(o) { return o.user; }]);\n// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n\n_.sortBy(users, ['user', 'age']);\n// => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n\nCreates an array of elements, sorted in ascending order by the results of\nrunning each element in a collection thru each iteratee. This method\nperforms a stable sort, that is, it preserves the original sort order of\nequal elements. The iteratees are invoked with one argument: (value)."},"lodash-now-e024a13":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash now"],"body":["_.now()"],"description":"_.defer(function(stamp) {\n  console.log(_.now() - stamp);\n}, _.now());\n// => Logs the number of milliseconds it took for the deferred invocation.\n\nGets the timestamp of the number of milliseconds that have elapsed since\nthe Unix epoch (1 January 1970 00:00:00 UTC)."},"lodash-after-9b3b92a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash after"],"body":["_.after(${n}, ${func})"],"description":"var saves = ['profile', 'settings'];\n\nvar done = _.after(saves.length, function() {\n  console.log('done saving!');\n});\n\n_.forEach(saves, function(type) {\n  asyncSave({ 'type': type, 'complete': done });\n});\n// => Logs 'done saving!' after the two async saves have completed.\n\nThe opposite of `_.before`; this method creates a function that invokes\n`func` once it's called `n` or more times."},"lodash-ary-8e8e5ff":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash ary"],"body":["_.ary(${func}, ${n})"],"description":"_.map(['6', '8', '10'], _.ary(parseInt, 1));\n// => [6, 8, 10]\n\nCreates a function that invokes `func`, with up to `n` arguments,\nignoring any additional arguments."},"lodash-before-7686e67":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash before"],"body":["_.before(${n}, ${func})"],"description":"jQuery(element).on('click', _.before(5, addContactToList));\n// => Allows adding up to 4 contacts to the list.\n\nCreates a function that invokes `func`, with the `this` binding and arguments\nof the created function, while it's called less than `n` times. Subsequent\ncalls to the created function return the result of the last `func` invocation."},"lodash-bind-9c3d8e1":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash bind"],"body":["_.bind(${func}, ${thisArg}, ${partials})"],"description":"function greet(greeting, punctuation) {\n  return greeting + ' ' + this.user + punctuation;\n}\n\nvar object = { 'user': 'fred' };\n\nvar bound = _.bind(greet, object, 'hi');\nbound('!');\n// => 'hi fred!'\n\n// Bound with placeholders.\nvar bound = _.bind(greet, object, _, '!');\nbound('hi');\n// => 'hi fred!'\n\nCreates a function that invokes `func` with the `this` binding of `thisArg`\nand `partials` prepended to the arguments it receives.\n\nThe `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\nmay be used as a placeholder for partially applied arguments.\n\n**Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\nproperty of bound functions."},"lodash-bindkey-1c27a22":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash bindkey"],"body":["_.bindKey(${object}, ${key}, ${partials})"],"description":"var object = {\n  'user': 'fred',\n  'greet': function(greeting, punctuation) {\n    return greeting + ' ' + this.user + punctuation;\n  }\n};\n\nvar bound = _.bindKey(object, 'greet', 'hi');\nbound('!');\n// => 'hi fred!'\n\nobject.greet = function(greeting, punctuation) {\n  return greeting + 'ya ' + this.user + punctuation;\n};\n\nbound('!');\n// => 'hiya fred!'\n\n// Bound with placeholders.\nvar bound = _.bindKey(object, 'greet', _, '!');\nbound('hi');\n// => 'hiya fred!'\n\nCreates a function that invokes the method at `object[key]` with `partials`\nprepended to the arguments it receives.\n\nThis method differs from `_.bind` by allowing bound functions to reference\nmethods that may be redefined or don't yet exist. See\n[Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\nfor more details.\n\nThe `_.bindKey.placeholder` value, which defaults to `_` in monolithic\nbuilds, may be used as a placeholder for partially applied arguments."},"lodash-curry-c7cee7a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash curry"],"body":["_.curry(${func}, ${arity})"],"description":"var abc = function(a, b, c) {\n  return [a, b, c];\n};\n\nvar curried = _.curry(abc);\n\ncurried(1)(2)(3);\n// => [1, 2, 3]\n\ncurried(1, 2)(3);\n// => [1, 2, 3]\n\ncurried(1, 2, 3);\n// => [1, 2, 3]\n\n// Curried with placeholders.\ncurried(1)(_, 3)(2);\n// => [1, 2, 3]\n\nCreates a function that accepts arguments of `func` and either invokes\n`func` returning its result, if at least `arity` number of arguments have\nbeen provided, or returns a function that accepts the remaining `func`\narguments, and so on. The arity of `func` may be specified if `func.length`\nis not sufficient.\n\nThe `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\nmay be used as a placeholder for provided arguments.\n\n**Note:** This method doesn't set the \"length\" property of curried functions."},"lodash-curryright-9d02c96":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash curryright"],"body":["_.curryRight(${func}, ${arity})"],"description":"var abc = function(a, b, c) {\n  return [a, b, c];\n};\n\nvar curried = _.curryRight(abc);\n\ncurried(3)(2)(1);\n// => [1, 2, 3]\n\ncurried(2, 3)(1);\n// => [1, 2, 3]\n\ncurried(1, 2, 3);\n// => [1, 2, 3]\n\n// Curried with placeholders.\ncurried(3)(1, _)(2);\n// => [1, 2, 3]\n\nThis method is like `_.curry` except that arguments are applied to `func`\nin the manner of `_.partialRight` instead of `_.partial`.\n\nThe `_.curryRight.placeholder` value, which defaults to `_` in monolithic\nbuilds, may be used as a placeholder for provided arguments.\n\n**Note:** This method doesn't set the \"length\" property of curried functions."},"lodash-debounce-a8fe72f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash debounce"],"body":["_.debounce(${func}, ${wait}, ${options}, ${options.leading}, ${options.maxWait}, ${options.trailing})"],"description":"// Avoid costly calculations while the window size is in flux.\njQuery(window).on('resize', _.debounce(calculateLayout, 150));\n\n// Invoke `sendMail` when clicked, debouncing subsequent calls.\njQuery(element).on('click', _.debounce(sendMail, 300, {\n  'leading': true,\n  'trailing': false\n}));\n\n// Ensure `batchLog` is invoked once after 1 second of debounced calls.\nvar debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\nvar source = new EventSource('/stream');\njQuery(source).on('message', debounced);\n\n// Cancel the trailing debounced invocation.\njQuery(window).on('popstate', debounced.cancel);\n\nCreates a debounced function that delays invoking `func` until after `wait`\nmilliseconds have elapsed since the last time the debounced function was\ninvoked. The debounced function comes with a `cancel` method to cancel\ndelayed `func` invocations and a `flush` method to immediately invoke them.\nProvide `options` to indicate whether `func` should be invoked on the\nleading and/or trailing edge of the `wait` timeout. The `func` is invoked\nwith the last arguments provided to the debounced function. Subsequent\ncalls to the debounced function return the result of the last `func`\ninvocation.\n\n**Note:** If `leading` and `trailing` options are `true`, `func` is\ninvoked on the trailing edge of the timeout only if the debounced function\nis invoked more than once during the `wait` timeout.\n\nIf `wait` is `0` and `leading` is `false`, `func` invocation is deferred\nuntil to the next tick, similar to `setTimeout` with a timeout of `0`.\n\nSee [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\nfor details over the differences between `_.debounce` and `_.throttle`."},"lodash-defer-0e6fe12":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash defer"],"body":["_.defer(${func}, ${args})"],"description":"_.defer(function(text) {\n  console.log(text);\n}, 'deferred');\n// => Logs 'deferred' after one millisecond.\n\nDefers invoking the `func` until the current call stack has cleared. Any\nadditional arguments are provided to `func` when it's invoked."},"lodash-delay-8f3ceb3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash delay"],"body":["_.delay(${func}, ${wait}, ${args})"],"description":"_.delay(function(text) {\n  console.log(text);\n}, 1000, 'later');\n// => Logs 'later' after one second.\n\nInvokes `func` after `wait` milliseconds. Any additional arguments are\nprovided to `func` when it's invoked."},"lodash-flip-13907d7":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash flip"],"body":["_.flip(${func})"],"description":"var flipped = _.flip(function() {\n  return _.toArray(arguments);\n});\n\nflipped('a', 'b', 'c', 'd');\n// => ['d', 'c', 'b', 'a']\n\nCreates a function that invokes `func` with arguments reversed."},"lodash-memoize-88d086e":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash memoize"],"body":["_.memoize(${func}, ${resolver})"],"description":"var object = { 'a': 1, 'b': 2 };\nvar other = { 'c': 3, 'd': 4 };\n\nvar values = _.memoize(_.values);\nvalues(object);\n// => [1, 2]\n\nvalues(other);\n// => [3, 4]\n\nobject.a = 2;\nvalues(object);\n// => [1, 2]\n\n// Modify the result cache.\nvalues.cache.set(object, ['a', 'b']);\nvalues(object);\n// => ['a', 'b']\n\n// Replace `_.memoize.Cache`.\n_.memoize.Cache = WeakMap;\n\nCreates a function that memoizes the result of `func`. If `resolver` is\nprovided, it determines the cache key for storing the result based on the\narguments provided to the memoized function. By default, the first argument\nprovided to the memoized function is used as the map cache key. The `func`\nis invoked with the `this` binding of the memoized function.\n\n**Note:** The cache is exposed as the `cache` property on the memoized\nfunction. Its creation may be customized by replacing the `_.memoize.Cache`\nconstructor with one whose instances implement the\n[`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\nmethod interface of `clear`, `delete`, `get`, `has`, and `set`."},"lodash-negate-170bbcd":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash negate"],"body":["_.negate(${predicate})"],"description":"function isEven(n) {\n  return n % 2 == 0;\n}\n\n_.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n// => [1, 3, 5]\n\nCreates a function that negates the result of the predicate `func`. The\n`func` predicate is invoked with the `this` binding and arguments of the\ncreated function."},"lodash-once-54aa492":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash once"],"body":["_.once(${func})"],"description":"var initialize = _.once(createApplication);\ninitialize();\ninitialize();\n// => `createApplication` is invoked once\n\nCreates a function that is restricted to invoking `func` once. Repeat calls\nto the function return the value of the first invocation. The `func` is\ninvoked with the `this` binding and arguments of the created function."},"lodash-overargs-c8922a3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash overargs"],"body":["_.overArgs(${func}, ${transforms})"],"description":"function doubled(n) {\n  return n * 2;\n}\n\nfunction square(n) {\n  return n * n;\n}\n\nvar func = _.overArgs(function(x, y) {\n  return [x, y];\n}, [square, doubled]);\n\nfunc(9, 3);\n// => [81, 6]\n\nfunc(10, 5);\n// => [100, 10]\n\nCreates a function that invokes `func` with its arguments transformed."},"lodash-partial-26413f3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash partial"],"body":["_.partial(${func}, ${partials})"],"description":"function greet(greeting, name) {\n  return greeting + ' ' + name;\n}\n\nvar sayHelloTo = _.partial(greet, 'hello');\nsayHelloTo('fred');\n// => 'hello fred'\n\n// Partially applied with placeholders.\nvar greetFred = _.partial(greet, _, 'fred');\ngreetFred('hi');\n// => 'hi fred'\n\nCreates a function that invokes `func` with `partials` prepended to the\narguments it receives. This method is like `_.bind` except it does **not**\nalter the `this` binding.\n\nThe `_.partial.placeholder` value, which defaults to `_` in monolithic\nbuilds, may be used as a placeholder for partially applied arguments.\n\n**Note:** This method doesn't set the \"length\" property of partially\napplied functions."},"lodash-partialright-eaba6b9":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash partialright"],"body":["_.partialRight(${func}, ${partials})"],"description":"function greet(greeting, name) {\n  return greeting + ' ' + name;\n}\n\nvar greetFred = _.partialRight(greet, 'fred');\ngreetFred('hi');\n// => 'hi fred'\n\n// Partially applied with placeholders.\nvar sayHelloTo = _.partialRight(greet, 'hello', _);\nsayHelloTo('fred');\n// => 'hello fred'\n\nThis method is like `_.partial` except that partially applied arguments\nare appended to the arguments it receives.\n\nThe `_.partialRight.placeholder` value, which defaults to `_` in monolithic\nbuilds, may be used as a placeholder for partially applied arguments.\n\n**Note:** This method doesn't set the \"length\" property of partially\napplied functions."},"lodash-rearg-9ce2ba8":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash rearg"],"body":["_.rearg(${func}, ${indexes})"],"description":"var rearged = _.rearg(function(a, b, c) {\n  return [a, b, c];\n}, [2, 0, 1]);\n\nrearged('b', 'c', 'a')\n// => ['a', 'b', 'c']\n\nCreates a function that invokes `func` with arguments arranged according\nto the specified `indexes` where the argument value at the first index is\nprovided as the first argument, the argument value at the second index is\nprovided as the second argument, and so on."},"lodash-rest-babc592":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash rest"],"body":["_.rest(${func}, ${start})"],"description":"var say = _.rest(function(what, names) {\n  return what + ' ' + _.initial(names).join(', ') +\n    (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n});\n\nsay('hello', 'fred', 'barney', 'pebbles');\n// => 'hello fred, barney, & pebbles'\n\nCreates a function that invokes `func` with the `this` binding of the\ncreated function and arguments from `start` and beyond provided as\nan array.\n\n**Note:** This method is based on the\n[rest parameter](https://mdn.io/rest_parameters)."},"lodash-spread-a86233a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash spread"],"body":["_.spread(${func}, ${start})"],"description":"var say = _.spread(function(who, what) {\n  return who + ' says ' + what;\n});\n\nsay(['fred', 'hello']);\n// => 'fred says hello'\n\nvar numbers = Promise.all([\n  Promise.resolve(40),\n  Promise.resolve(36)\n]);\n\nnumbers.then(_.spread(function(x, y) {\n  return x + y;\n}));\n// => a Promise of 76\n\nCreates a function that invokes `func` with the `this` binding of the\ncreate function and an array of arguments much like\n[`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n\n**Note:** This method is based on the\n[spread operator](https://mdn.io/spread_operator)."},"lodash-throttle-ecb76f0":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash throttle"],"body":["_.throttle(${func}, ${wait}, ${options}, ${options.leading}, ${options.trailing})"],"description":"// Avoid excessively updating the position while scrolling.\njQuery(window).on('scroll', _.throttle(updatePosition, 100));\n\n// Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\nvar throttled = _.throttle(renewToken, 300000, { 'trailing': false });\njQuery(element).on('click', throttled);\n\n// Cancel the trailing throttled invocation.\njQuery(window).on('popstate', throttled.cancel);\n\nCreates a throttled function that only invokes `func` at most once per\nevery `wait` milliseconds. The throttled function comes with a `cancel`\nmethod to cancel delayed `func` invocations and a `flush` method to\nimmediately invoke them. Provide `options` to indicate whether `func`\nshould be invoked on the leading and/or trailing edge of the `wait`\ntimeout. The `func` is invoked with the last arguments provided to the\nthrottled function. Subsequent calls to the throttled function return the\nresult of the last `func` invocation.\n\n**Note:** If `leading` and `trailing` options are `true`, `func` is\ninvoked on the trailing edge of the timeout only if the throttled function\nis invoked more than once during the `wait` timeout.\n\nIf `wait` is `0` and `leading` is `false`, `func` invocation is deferred\nuntil to the next tick, similar to `setTimeout` with a timeout of `0`.\n\nSee [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\nfor details over the differences between `_.throttle` and `_.debounce`."},"lodash-unary-7ac6fc3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash unary"],"body":["_.unary(${func})"],"description":"_.map(['6', '8', '10'], _.unary(parseInt));\n// => [6, 8, 10]\n\nCreates a function that accepts up to one argument, ignoring any\nadditional arguments."},"lodash-wrap-fd328a4":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash wrap"],"body":["_.wrap(${value}, ${wrapper})"],"description":"var p = _.wrap(_.escape, function(func, text) {\n  return '<p>' + func(text) + '</p>';\n});\n\np('fred, barney, & pebbles');\n// => '<p>fred, barney, &amp; pebbles</p>'\n\nCreates a function that provides `value` to `wrapper` as its first\nargument. Any additional arguments provided to the function are appended\nto those provided to the `wrapper`. The wrapper is invoked with the `this`\nbinding of the created function."},"lodash-castarray-804d0a5":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash castarray"],"body":["_.castArray(${value})"],"description":"_.castArray(1);\n// => [1]\n\n_.castArray({ 'a': 1 });\n// => [{ 'a': 1 }]\n\n_.castArray('abc');\n// => ['abc']\n\n_.castArray(null);\n// => [null]\n\n_.castArray(undefined);\n// => [undefined]\n\n_.castArray();\n// => []\n\nvar array = [1, 2, 3];\nconsole.log(_.castArray(array) === array);\n// => true\n\nCasts `value` as an array if it's not one."},"lodash-clone-a7745ce":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash clone"],"body":["_.clone(${value})"],"description":"var objects = [{ 'a': 1 }, { 'b': 2 }];\n\nvar shallow = _.clone(objects);\nconsole.log(shallow[0] === objects[0]);\n// => true\n\nCreates a shallow clone of `value`.\n\n**Note:** This method is loosely based on the\n[structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\nand supports cloning arrays, array buffers, booleans, date objects, maps,\nnumbers, `Object` objects, regexes, sets, strings, symbols, and typed\narrays. The own enumerable properties of `arguments` objects are cloned\nas plain objects. An empty object is returned for uncloneable values such\nas error objects, functions, DOM nodes, and WeakMaps."},"lodash-clonewith-39ad58d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash clonewith"],"body":["_.cloneWith(${value}, ${customizer})"],"description":"function customizer(value) {\n  if (_.isElement(value)) {\n    return value.cloneNode(false);\n  }\n}\n\nvar el = _.cloneWith(document.body, customizer);\n\nconsole.log(el === document.body);\n// => false\nconsole.log(el.nodeName);\n// => 'BODY'\nconsole.log(el.childNodes.length);\n// => 0\n\nThis method is like `_.clone` except that it accepts `customizer` which\nis invoked to produce the cloned value. If `customizer` returns `undefined`,\ncloning is handled by the method instead. The `customizer` is invoked with\nup to four arguments; (value [, index|key, object, stack])."},"lodash-clonedeep-92a4625":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash clonedeep"],"body":["_.cloneDeep(${value})"],"description":"var objects = [{ 'a': 1 }, { 'b': 2 }];\n\nvar deep = _.cloneDeep(objects);\nconsole.log(deep[0] === objects[0]);\n// => false\n\nThis method is like `_.clone` except that it recursively clones `value`."},"lodash-clonedeepwith-d4fb17c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash clonedeepwith"],"body":["_.cloneDeepWith(${value}, ${customizer})"],"description":"function customizer(value) {\n  if (_.isElement(value)) {\n    return value.cloneNode(true);\n  }\n}\n\nvar el = _.cloneDeepWith(document.body, customizer);\n\nconsole.log(el === document.body);\n// => false\nconsole.log(el.nodeName);\n// => 'BODY'\nconsole.log(el.childNodes.length);\n// => 20\n\nThis method is like `_.cloneWith` except that it recursively clones `value`."},"lodash-conformsto-15021be":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash conformsto"],"body":["_.conformsTo(${object}, ${source})"],"description":"var object = { 'a': 1, 'b': 2 };\n\n_.conformsTo(object, { 'b': function(n) { return n > 1; } });\n// => true\n\n_.conformsTo(object, { 'b': function(n) { return n > 2; } });\n// => false\n\nChecks if `object` conforms to `source` by invoking the predicate\nproperties of `source` with the corresponding property values of `object`.\n\n**Note:** This method is equivalent to `_.conforms` when `source` is\npartially applied."},"lodash-eq-a0ba0d1":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash eq"],"body":["_.eq(${value}, ${other})"],"description":"var object = { 'a': 1 };\nvar other = { 'a': 1 };\n\n_.eq(object, object);\n// => true\n\n_.eq(object, other);\n// => false\n\n_.eq('a', 'a');\n// => true\n\n_.eq('a', Object('a'));\n// => false\n\n_.eq(NaN, NaN);\n// => true\n\nPerforms a\n[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\ncomparison between two values to determine if they are equivalent."},"lodash-gt-4867333":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash gt"],"body":["_.gt(${value}, ${other})"],"description":"_.gt(3, 1);\n// => true\n\n_.gt(3, 3);\n// => false\n\n_.gt(1, 3);\n// => false\n\nChecks if `value` is greater than `other`."},"lodash-gte-fe4303c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash gte"],"body":["_.gte(${value}, ${other})"],"description":"_.gte(3, 1);\n// => true\n\n_.gte(3, 3);\n// => true\n\n_.gte(1, 3);\n// => false\n\nChecks if `value` is greater than or equal to `other`."},"lodash-isarguments-097b01f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isarguments"],"body":["_.isArguments(${value})"],"description":"_.isArguments(function() { return arguments; }());\n// => true\n\n_.isArguments([1, 2, 3]);\n// => false\n\nChecks if `value` is likely an `arguments` object."},"lodash-isarray-977c33f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isarray"],"body":["_.isArray(${value})"],"description":"_.isArray([1, 2, 3]);\n// => true\n\n_.isArray(document.body.children);\n// => false\n\n_.isArray('abc');\n// => false\n\n_.isArray(_.noop);\n// => false\n\nChecks if `value` is classified as an `Array` object."},"lodash-isarraybuffer-a3636bb":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isarraybuffer"],"body":["_.isArrayBuffer(${value})"],"description":"_.isArrayBuffer(new ArrayBuffer(2));\n// => true\n\n_.isArrayBuffer(new Array(2));\n// => false\n\nChecks if `value` is classified as an `ArrayBuffer` object."},"lodash-isarraylike-4fe1d87":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isarraylike"],"body":["_.isArrayLike(${value})"],"description":"_.isArrayLike([1, 2, 3]);\n// => true\n\n_.isArrayLike(document.body.children);\n// => true\n\n_.isArrayLike('abc');\n// => true\n\n_.isArrayLike(_.noop);\n// => false\n\nChecks if `value` is array-like. A value is considered array-like if it's\nnot a function and has a `value.length` that's an integer greater than or\nequal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`."},"lodash-isarraylikeobject-b9cc26d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isarraylikeobject"],"body":["_.isArrayLikeObject(${value})"],"description":"_.isArrayLikeObject([1, 2, 3]);\n// => true\n\n_.isArrayLikeObject(document.body.children);\n// => true\n\n_.isArrayLikeObject('abc');\n// => false\n\n_.isArrayLikeObject(_.noop);\n// => false\n\nThis method is like `_.isArrayLike` except that it also checks if `value`\nis an object."},"lodash-isboolean-bd394b1":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isboolean"],"body":["_.isBoolean(${value})"],"description":"_.isBoolean(false);\n// => true\n\n_.isBoolean(null);\n// => false\n\nChecks if `value` is classified as a boolean primitive or object."},"lodash-isbuffer-ea5cc9a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isbuffer"],"body":["_.isBuffer(${value})"],"description":"_.isBuffer(new Buffer(2));\n// => true\n\n_.isBuffer(new Uint8Array(2));\n// => false\n\nChecks if `value` is a buffer."},"lodash-isdate-787c1f1":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isdate"],"body":["_.isDate(${value})"],"description":"_.isDate(new Date);\n// => true\n\n_.isDate('Mon April 23 2012');\n// => false\n\nChecks if `value` is classified as a `Date` object."},"lodash-iselement-49d3290":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash iselement"],"body":["_.isElement(${value})"],"description":"_.isElement(document.body);\n// => true\n\n_.isElement('<body>');\n// => false\n\nChecks if `value` is likely a DOM element."},"lodash-isempty-41dcda0":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isempty"],"body":["_.isEmpty(${value})"],"description":"_.isEmpty(null);\n// => true\n\n_.isEmpty(true);\n// => true\n\n_.isEmpty(1);\n// => true\n\n_.isEmpty([1, 2, 3]);\n// => false\n\n_.isEmpty({ 'a': 1 });\n// => false\n\nChecks if `value` is an empty object, collection, map, or set.\n\nObjects are considered empty if they have no own enumerable string keyed\nproperties.\n\nArray-like values such as `arguments` objects, arrays, buffers, strings, or\njQuery-like collections are considered empty if they have a `length` of `0`.\nSimilarly, maps and sets are considered empty if they have a `size` of `0`."},"lodash-isequal-4ac8f6f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isequal"],"body":["_.isEqual(${value}, ${other})"],"description":"var object = { 'a': 1 };\nvar other = { 'a': 1 };\n\n_.isEqual(object, other);\n// => true\n\nobject === other;\n// => false\n\nPerforms a deep comparison between two values to determine if they are\nequivalent.\n\n**Note:** This method supports comparing arrays, array buffers, booleans,\ndate objects, error objects, maps, numbers, `Object` objects, regexes,\nsets, strings, symbols, and typed arrays. `Object` objects are compared\nby their own, not inherited, enumerable properties. Functions and DOM\nnodes are compared by strict equality, i.e. `===`."},"lodash-isequalwith-6a9c557":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isequalwith"],"body":["_.isEqualWith(${value}, ${other}, ${customizer})"],"description":"function isGreeting(value) {\n  return /^h(?:i|ello)$/.test(value);\n}\n\nfunction customizer(objValue, othValue) {\n  if (isGreeting(objValue) && isGreeting(othValue)) {\n    return true;\n  }\n}\n\nvar array = ['hello', 'goodbye'];\nvar other = ['hi', 'goodbye'];\n\n_.isEqualWith(array, other, customizer);\n// => true\n\nThis method is like `_.isEqual` except that it accepts `customizer` which\nis invoked to compare values. If `customizer` returns `undefined`, comparisons\nare handled by the method instead. The `customizer` is invoked with up to\nsix arguments: (objValue, othValue [, index|key, object, other, stack])."},"lodash-iserror-aa6e607":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash iserror"],"body":["_.isError(${value})"],"description":"_.isError(new Error);\n// => true\n\n_.isError(Error);\n// => false\n\nChecks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n`SyntaxError`, `TypeError`, or `URIError` object."},"lodash-isfinite-5e3b1af":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isfinite"],"body":["_.isFinite(${value})"],"description":"_.isFinite(3);\n// => true\n\n_.isFinite(Number.MIN_VALUE);\n// => true\n\n_.isFinite(Infinity);\n// => false\n\n_.isFinite('3');\n// => false\n\nChecks if `value` is a finite primitive number.\n\n**Note:** This method is based on\n[`Number.isFinite`](https://mdn.io/Number/isFinite)."},"lodash-isfunction-a46f204":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isfunction"],"body":["_.isFunction(${value})"],"description":"_.isFunction(_);\n// => true\n\n_.isFunction(/abc/);\n// => false\n\nChecks if `value` is classified as a `Function` object."},"lodash-isinteger-f29c851":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isinteger"],"body":["_.isInteger(${value})"],"description":"_.isInteger(3);\n// => true\n\n_.isInteger(Number.MIN_VALUE);\n// => false\n\n_.isInteger(Infinity);\n// => false\n\n_.isInteger('3');\n// => false\n\nChecks if `value` is an integer.\n\n**Note:** This method is based on\n[`Number.isInteger`](https://mdn.io/Number/isInteger)."},"lodash-islength-8d0a4e9":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash islength"],"body":["_.isLength(${value})"],"description":"_.isLength(3);\n// => true\n\n_.isLength(Number.MIN_VALUE);\n// => false\n\n_.isLength(Infinity);\n// => false\n\n_.isLength('3');\n// => false\n\nChecks if `value` is a valid array-like length.\n\n**Note:** This method is loosely based on\n[`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength)."},"lodash-isobject-c38a47a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isobject"],"body":["_.isObject(${value})"],"description":"_.isObject({});\n// => true\n\n_.isObject([1, 2, 3]);\n// => true\n\n_.isObject(_.noop);\n// => true\n\n_.isObject(null);\n// => false\n\nChecks if `value` is the\n[language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\nof `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)"},"lodash-isobjectlike-edcc4dd":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isobjectlike"],"body":["_.isObjectLike(${value})"],"description":"_.isObjectLike({});\n// => true\n\n_.isObjectLike([1, 2, 3]);\n// => true\n\n_.isObjectLike(_.noop);\n// => false\n\n_.isObjectLike(null);\n// => false\n\nChecks if `value` is object-like. A value is object-like if it's not `null`\nand has a `typeof` result of \"object\"."},"lodash-ismap-5bba944":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash ismap"],"body":["_.isMap(${value})"],"description":"_.isMap(new Map);\n// => true\n\n_.isMap(new WeakMap);\n// => false\n\nChecks if `value` is classified as a `Map` object."},"lodash-ismatch-9cba6f6":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash ismatch"],"body":["_.isMatch(${object}, ${source})"],"description":"var object = { 'a': 1, 'b': 2 };\n\n_.isMatch(object, { 'b': 2 });\n// => true\n\n_.isMatch(object, { 'b': 1 });\n// => false\n\nPerforms a partial deep comparison between `object` and `source` to\ndetermine if `object` contains equivalent property values.\n\n**Note:** This method is equivalent to `_.matches` when `source` is\npartially applied.\n\nPartial comparisons will match empty array and empty object `source`\nvalues against any array or object value, respectively. See `_.isEqual`\nfor a list of supported value comparisons."},"lodash-ismatchwith-ba0d026":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash ismatchwith"],"body":["_.isMatchWith(${object}, ${source}, ${customizer})"],"description":"function isGreeting(value) {\n  return /^h(?:i|ello)$/.test(value);\n}\n\nfunction customizer(objValue, srcValue) {\n  if (isGreeting(objValue) && isGreeting(srcValue)) {\n    return true;\n  }\n}\n\nvar object = { 'greeting': 'hello' };\nvar source = { 'greeting': 'hi' };\n\n_.isMatchWith(object, source, customizer);\n// => true\n\nThis method is like `_.isMatch` except that it accepts `customizer` which\nis invoked to compare values. If `customizer` returns `undefined`, comparisons\nare handled by the method instead. The `customizer` is invoked with five\narguments: (objValue, srcValue, index|key, object, source)."},"lodash-isnan-b43c7ff":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isnan"],"body":["_.isNaN(${value})"],"description":"_.isNaN(NaN);\n// => true\n\n_.isNaN(new Number(NaN));\n// => true\n\nisNaN(undefined);\n// => true\n\n_.isNaN(undefined);\n// => false\n\nChecks if `value` is `NaN`.\n\n**Note:** This method is based on\n[`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\nglobal [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n`undefined` and other non-number values."},"lodash-isnative-5e8fa92":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isnative"],"body":["_.isNative(${value})"],"description":"_.isNative(Array.prototype.push);\n// => true\n\n_.isNative(_);\n// => false\n\nChecks if `value` is a pristine native function.\n\n**Note:** This method can't reliably detect native functions in the presence\nof the core-js package because core-js circumvents this kind of detection.\nDespite multiple requests, the core-js maintainer has made it clear: any\nattempt to fix the detection will be obstructed. As a result, we're left\nwith little choice but to throw an error. Unfortunately, this also affects\npackages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\nwhich rely on core-js."},"lodash-isnull-0b030ae":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isnull"],"body":["_.isNull(${value})"],"description":"_.isNull(null);\n// => true\n\n_.isNull(void 0);\n// => false\n\nChecks if `value` is `null`."},"lodash-isnil-f2b993f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isnil"],"body":["_.isNil(${value})"],"description":"_.isNil(null);\n// => true\n\n_.isNil(void 0);\n// => true\n\n_.isNil(NaN);\n// => false\n\nChecks if `value` is `null` or `undefined`."},"lodash-isnumber-d0118ff":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isnumber"],"body":["_.isNumber(${value})"],"description":"_.isNumber(3);\n// => true\n\n_.isNumber(Number.MIN_VALUE);\n// => true\n\n_.isNumber(Infinity);\n// => true\n\n_.isNumber('3');\n// => false\n\nChecks if `value` is classified as a `Number` primitive or object.\n\n**Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\nclassified as numbers, use the `_.isFinite` method."},"lodash-isplainobject-e4d0aa7":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isplainobject"],"body":["_.isPlainObject(${value})"],"description":"function Foo() {\n  this.a = 1;\n}\n\n_.isPlainObject(new Foo);\n// => false\n\n_.isPlainObject([1, 2, 3]);\n// => false\n\n_.isPlainObject({ 'x': 0, 'y': 0 });\n// => true\n\n_.isPlainObject(Object.create(null));\n// => true\n\nChecks if `value` is a plain object, that is, an object created by the\n`Object` constructor or one with a `[[Prototype]]` of `null`."},"lodash-isregexp-5310928":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isregexp"],"body":["_.isRegExp(${value})"],"description":"_.isRegExp(/abc/);\n// => true\n\n_.isRegExp('/abc/');\n// => false\n\nChecks if `value` is classified as a `RegExp` object."},"lodash-issafeinteger-7571b00":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash issafeinteger"],"body":["_.isSafeInteger(${value})"],"description":"_.isSafeInteger(3);\n// => true\n\n_.isSafeInteger(Number.MIN_VALUE);\n// => false\n\n_.isSafeInteger(Infinity);\n// => false\n\n_.isSafeInteger('3');\n// => false\n\nChecks if `value` is a safe integer. An integer is safe if it's an IEEE-754\ndouble precision number which isn't the result of a rounded unsafe integer.\n\n**Note:** This method is based on\n[`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger)."},"lodash-isset-53764d8":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isset"],"body":["_.isSet(${value})"],"description":"_.isSet(new Set);\n// => true\n\n_.isSet(new WeakSet);\n// => false\n\nChecks if `value` is classified as a `Set` object."},"lodash-isstring-607aaf4":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isstring"],"body":["_.isString(${value})"],"description":"_.isString('abc');\n// => true\n\n_.isString(1);\n// => false\n\nChecks if `value` is classified as a `String` primitive or object."},"lodash-issymbol-d73d8f3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash issymbol"],"body":["_.isSymbol(${value})"],"description":"_.isSymbol(Symbol.iterator);\n// => true\n\n_.isSymbol('abc');\n// => false\n\nChecks if `value` is classified as a `Symbol` primitive or object."},"lodash-istypedarray-ddc4ee3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash istypedarray"],"body":["_.isTypedArray(${value})"],"description":"_.isTypedArray(new Uint8Array);\n// => true\n\n_.isTypedArray([]);\n// => false\n\nChecks if `value` is classified as a typed array."},"lodash-isundefined-3388713":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isundefined"],"body":["_.isUndefined(${value})"],"description":"_.isUndefined(void 0);\n// => true\n\n_.isUndefined(null);\n// => false\n\nChecks if `value` is `undefined`."},"lodash-isweakmap-e784adf":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isweakmap"],"body":["_.isWeakMap(${value})"],"description":"_.isWeakMap(new WeakMap);\n// => true\n\n_.isWeakMap(new Map);\n// => false\n\nChecks if `value` is classified as a `WeakMap` object."},"lodash-isweakset-17ae503":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash isweakset"],"body":["_.isWeakSet(${value})"],"description":"_.isWeakSet(new WeakSet);\n// => true\n\n_.isWeakSet(new Set);\n// => false\n\nChecks if `value` is classified as a `WeakSet` object."},"lodash-lt-06e571e":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash lt"],"body":["_.lt(${value}, ${other})"],"description":"_.lt(1, 3);\n// => true\n\n_.lt(3, 3);\n// => false\n\n_.lt(3, 1);\n// => false\n\nChecks if `value` is less than `other`."},"lodash-lte-0ae83c2":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash lte"],"body":["_.lte(${value}, ${other})"],"description":"_.lte(1, 3);\n// => true\n\n_.lte(3, 3);\n// => true\n\n_.lte(3, 1);\n// => false\n\nChecks if `value` is less than or equal to `other`."},"lodash-toarray-eb223a1":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash toarray"],"body":["_.toArray(${value})"],"description":"_.toArray({ 'a': 1, 'b': 2 });\n// => [1, 2]\n\n_.toArray('abc');\n// => ['a', 'b', 'c']\n\n_.toArray(1);\n// => []\n\n_.toArray(null);\n// => []\n\nConverts `value` to an array."},"lodash-tofinite-e7a3c20":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash tofinite"],"body":["_.toFinite(${value})"],"description":"_.toFinite(3.2);\n// => 3.2\n\n_.toFinite(Number.MIN_VALUE);\n// => 5e-324\n\n_.toFinite(Infinity);\n// => 1.7976931348623157e+308\n\n_.toFinite('3.2');\n// => 3.2\n\nConverts `value` to a finite number."},"lodash-tointeger-e45f23d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash tointeger"],"body":["_.toInteger(${value})"],"description":"_.toInteger(3.2);\n// => 3\n\n_.toInteger(Number.MIN_VALUE);\n// => 0\n\n_.toInteger(Infinity);\n// => 1.7976931348623157e+308\n\n_.toInteger('3.2');\n// => 3\n\nConverts `value` to an integer.\n\n**Note:** This method is loosely based on\n[`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger)."},"lodash-tolength-9226926":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash tolength"],"body":["_.toLength(${value})"],"description":"_.toLength(3.2);\n// => 3\n\n_.toLength(Number.MIN_VALUE);\n// => 0\n\n_.toLength(Infinity);\n// => 4294967295\n\n_.toLength('3.2');\n// => 3\n\nConverts `value` to an integer suitable for use as the length of an\narray-like object.\n\n**Note:** This method is based on\n[`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength)."},"lodash-tonumber-7aa6ab0":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash tonumber"],"body":["_.toNumber(${value})"],"description":"_.toNumber(3.2);\n// => 3.2\n\n_.toNumber(Number.MIN_VALUE);\n// => 5e-324\n\n_.toNumber(Infinity);\n// => Infinity\n\n_.toNumber('3.2');\n// => 3.2\n\nConverts `value` to a number."},"lodash-toplainobject-23ca49f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash toplainobject"],"body":["_.toPlainObject(${value})"],"description":"function Foo() {\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.assign({ 'a': 1 }, new Foo);\n// => { 'a': 1, 'b': 2 }\n\n_.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n// => { 'a': 1, 'b': 2, 'c': 3 }\n\nConverts `value` to a plain object flattening inherited enumerable string\nkeyed properties of `value` to own properties of the plain object."},"lodash-tosafeinteger-0f60796":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash tosafeinteger"],"body":["_.toSafeInteger(${value})"],"description":"_.toSafeInteger(3.2);\n// => 3\n\n_.toSafeInteger(Number.MIN_VALUE);\n// => 0\n\n_.toSafeInteger(Infinity);\n// => 9007199254740991\n\n_.toSafeInteger('3.2');\n// => 3\n\nConverts `value` to a safe integer. A safe integer can be compared and\nrepresented correctly."},"lodash-tostring-a48abd9":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash tostring"],"body":["_.toString(${value})"],"description":"_.toString(null);\n// => ''\n\n_.toString(-0);\n// => '-0'\n\n_.toString([1, 2, 3]);\n// => '1,2,3'\n\nConverts `value` to a string. An empty string is returned for `null`\nand `undefined` values. The sign of `-0` is preserved."},"lodash-assign-8fd2320":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash assign"],"body":["_.assign(${object}, ${sources})"],"description":"function Foo() {\n  this.a = 1;\n}\n\nfunction Bar() {\n  this.c = 3;\n}\n\nFoo.prototype.b = 2;\nBar.prototype.d = 4;\n\n_.assign({ 'a': 0 }, new Foo, new Bar);\n// => { 'a': 1, 'c': 3 }\n\nAssigns own enumerable string keyed properties of source objects to the\ndestination object. Source objects are applied from left to right.\nSubsequent sources overwrite property assignments of previous sources.\n\n**Note:** This method mutates `object` and is loosely based on\n[`Object.assign`](https://mdn.io/Object/assign)."},"lodash-extend-64a7c20":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash extend"],"body":["_.extend(${object}, ${sources})"],"description":"function Foo() {\n  this.a = 1;\n}\n\nfunction Bar() {\n  this.c = 3;\n}\n\nFoo.prototype.b = 2;\nBar.prototype.d = 4;\n\n_.assignIn({ 'a': 0 }, new Foo, new Bar);\n// => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n\nThis method is like `_.assign` except that it iterates over own and\ninherited source properties.\n\n**Note:** This method mutates `object`."},"lodash-extendwith-890c50f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash extendwith"],"body":["_.extendWith(${object}, ${sources}, ${customizer})"],"description":"function customizer(objValue, srcValue) {\n  return _.isUndefined(objValue) ? srcValue : objValue;\n}\n\nvar defaults = _.partialRight(_.assignInWith, customizer);\n\ndefaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n// => { 'a': 1, 'b': 2 }\n\nThis method is like `_.assignIn` except that it accepts `customizer`\nwhich is invoked to produce the assigned values. If `customizer` returns\n`undefined`, assignment is handled by the method instead. The `customizer`\nis invoked with five arguments: (objValue, srcValue, key, object, source).\n\n**Note:** This method mutates `object`."},"lodash-assignwith-5062399":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash assignwith"],"body":["_.assignWith(${object}, ${sources}, ${customizer})"],"description":"function customizer(objValue, srcValue) {\n  return _.isUndefined(objValue) ? srcValue : objValue;\n}\n\nvar defaults = _.partialRight(_.assignWith, customizer);\n\ndefaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n// => { 'a': 1, 'b': 2 }\n\nThis method is like `_.assign` except that it accepts `customizer`\nwhich is invoked to produce the assigned values. If `customizer` returns\n`undefined`, assignment is handled by the method instead. The `customizer`\nis invoked with five arguments: (objValue, srcValue, key, object, source).\n\n**Note:** This method mutates `object`."},"lodash-create-c286c3d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash create"],"body":["_.create(${prototype}, ${properties})"],"description":"function Shape() {\n  this.x = 0;\n  this.y = 0;\n}\n\nfunction Circle() {\n  Shape.call(this);\n}\n\nCircle.prototype = _.create(Shape.prototype, {\n  'constructor': Circle\n});\n\nvar circle = new Circle;\ncircle instanceof Circle;\n// => true\n\ncircle instanceof Shape;\n// => true\n\nCreates an object that inherits from the `prototype` object. If a\n`properties` object is given, its own enumerable string keyed properties\nare assigned to the created object."},"lodash-defaults-8b0d9d0":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash defaults"],"body":["_.defaults(${object}, ${sources})"],"description":"_.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n// => { 'a': 1, 'b': 2 }\n\nAssigns own and inherited enumerable string keyed properties of source\nobjects to the destination object for all destination properties that\nresolve to `undefined`. Source objects are applied from left to right.\nOnce a property is set, additional values of the same property are ignored.\n\n**Note:** This method mutates `object`."},"lodash-defaultsdeep-ad055ba":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash defaultsdeep"],"body":["_.defaultsDeep(${object}, ${sources})"],"description":"_.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n// => { 'a': { 'b': 2, 'c': 3 } }\n\nThis method is like `_.defaults` except that it recursively assigns\ndefault properties.\n\n**Note:** This method mutates `object`."},"lodash-findkey-2fce59a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash findkey"],"body":["_.findKey(${object}, ${predicate})"],"description":"var users = {\n  'barney':  { 'age': 36, 'active': true },\n  'fred':    { 'age': 40, 'active': false },\n  'pebbles': { 'age': 1,  'active': true }\n};\n\n_.findKey(users, function(o) { return o.age < 40; });\n// => 'barney' (iteration order is not guaranteed)\n\n// The `_.matches` iteratee shorthand.\n_.findKey(users, { 'age': 1, 'active': true });\n// => 'pebbles'\n\n// The `_.matchesProperty` iteratee shorthand.\n_.findKey(users, ['active', false]);\n// => 'fred'\n\n// The `_.property` iteratee shorthand.\n_.findKey(users, 'active');\n// => 'barney'\n\nThis method is like `_.find` except that it returns the key of the first\nelement `predicate` returns truthy for instead of the element itself."},"lodash-findlastkey-3d18438":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash findlastkey"],"body":["_.findLastKey(${object}, ${predicate})"],"description":"var users = {\n  'barney':  { 'age': 36, 'active': true },\n  'fred':    { 'age': 40, 'active': false },\n  'pebbles': { 'age': 1,  'active': true }\n};\n\n_.findLastKey(users, function(o) { return o.age < 40; });\n// => returns 'pebbles' assuming `_.findKey` returns 'barney'\n\n// The `_.matches` iteratee shorthand.\n_.findLastKey(users, { 'age': 36, 'active': true });\n// => 'barney'\n\n// The `_.matchesProperty` iteratee shorthand.\n_.findLastKey(users, ['active', false]);\n// => 'fred'\n\n// The `_.property` iteratee shorthand.\n_.findLastKey(users, 'active');\n// => 'pebbles'\n\nThis method is like `_.findKey` except that it iterates over elements of\na collection in the opposite order."},"lodash-forin-bb076f0":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash forin"],"body":["_.forIn(${object}, ${iteratee})"],"description":"function Foo() {\n  this.a = 1;\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.forIn(new Foo, function(value, key) {\n  console.log(key);\n});\n// => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n\nIterates over own and inherited enumerable string keyed properties of an\nobject and invokes `iteratee` for each property. The iteratee is invoked\nwith three arguments: (value, key, object). Iteratee functions may exit\niteration early by explicitly returning `false`."},"lodash-forinright-fd24cb4":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash forinright"],"body":["_.forInRight(${object}, ${iteratee})"],"description":"function Foo() {\n  this.a = 1;\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.forInRight(new Foo, function(value, key) {\n  console.log(key);\n});\n// => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n\nThis method is like `_.forIn` except that it iterates over properties of\n`object` in the opposite order."},"lodash-forown-3c68d3d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash forown"],"body":["_.forOwn(${object}, ${iteratee})"],"description":"function Foo() {\n  this.a = 1;\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.forOwn(new Foo, function(value, key) {\n  console.log(key);\n});\n// => Logs 'a' then 'b' (iteration order is not guaranteed).\n\nIterates over own enumerable string keyed properties of an object and\ninvokes `iteratee` for each property. The iteratee is invoked with three\narguments: (value, key, object). Iteratee functions may exit iteration\nearly by explicitly returning `false`."},"lodash-forownright-5bb9ddc":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash forownright"],"body":["_.forOwnRight(${object}, ${iteratee})"],"description":"function Foo() {\n  this.a = 1;\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.forOwnRight(new Foo, function(value, key) {\n  console.log(key);\n});\n// => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n\nThis method is like `_.forOwn` except that it iterates over properties of\n`object` in the opposite order."},"lodash-functions-d846f7a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash functions"],"body":["_.functions(${object})"],"description":"function Foo() {\n  this.a = _.constant('a');\n  this.b = _.constant('b');\n}\n\nFoo.prototype.c = _.constant('c');\n\n_.functions(new Foo);\n// => ['a', 'b']\n\nCreates an array of function property names from own enumerable properties\nof `object`."},"lodash-functionsin-99cb1dd":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash functionsin"],"body":["_.functionsIn(${object})"],"description":"function Foo() {\n  this.a = _.constant('a');\n  this.b = _.constant('b');\n}\n\nFoo.prototype.c = _.constant('c');\n\n_.functionsIn(new Foo);\n// => ['a', 'b', 'c']\n\nCreates an array of function property names from own and inherited\nenumerable properties of `object`."},"lodash-get-b68ee91":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash get"],"body":["_.get(${object}, ${path}, ${defaultValue})"],"description":"var object = { 'a': [{ 'b': { 'c': 3 } }] };\n\n_.get(object, 'a[0].b.c');\n// => 3\n\n_.get(object, ['a', '0', 'b', 'c']);\n// => 3\n\n_.get(object, 'a.b.c', 'default');\n// => 'default'\n\nGets the value at `path` of `object`. If the resolved value is\n`undefined`, the `defaultValue` is returned in its place."},"lodash-has-f1d76ed":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash has"],"body":["_.has(${object}, ${path})"],"description":"var object = { 'a': { 'b': 2 } };\nvar other = _.create({ 'a': _.create({ 'b': 2 }) });\n\n_.has(object, 'a');\n// => true\n\n_.has(object, 'a.b');\n// => true\n\n_.has(object, ['a', 'b']);\n// => true\n\n_.has(other, 'a');\n// => false\n\nChecks if `path` is a direct property of `object`."},"lodash-hasin-fe8ddda":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash hasin"],"body":["_.hasIn(${object}, ${path})"],"description":"var object = _.create({ 'a': _.create({ 'b': 2 }) });\n\n_.hasIn(object, 'a');\n// => true\n\n_.hasIn(object, 'a.b');\n// => true\n\n_.hasIn(object, ['a', 'b']);\n// => true\n\n_.hasIn(object, 'b');\n// => false\n\nChecks if `path` is a direct or inherited property of `object`."},"lodash-invert-26bf8a4":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash invert"],"body":["_.invert(${object})"],"description":"var object = { 'a': 1, 'b': 2, 'c': 1 };\n\n_.invert(object);\n// => { '1': 'c', '2': 'b' }\n\nCreates an object composed of the inverted keys and values of `object`.\nIf `object` contains duplicate values, subsequent values overwrite\nproperty assignments of previous values."},"lodash-invertby-e4ec1b8":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash invertby"],"body":["_.invertBy(${object}, ${iteratee})"],"description":"var object = { 'a': 1, 'b': 2, 'c': 1 };\n\n_.invertBy(object);\n// => { '1': ['a', 'c'], '2': ['b'] }\n\n_.invertBy(object, function(value) {\n  return 'group' + value;\n});\n// => { 'group1': ['a', 'c'], 'group2': ['b'] }\n\nThis method is like `_.invert` except that the inverted object is generated\nfrom the results of running each element of `object` thru `iteratee`. The\ncorresponding inverted value of each inverted key is an array of keys\nresponsible for generating the inverted value. The iteratee is invoked\nwith one argument: (value)."},"lodash-invoke-bcca9f8":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash invoke"],"body":["_.invoke(${object}, ${path}, ${args})"],"description":"var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n\n_.invoke(object, 'a[0].b.c.slice', 1, 3);\n// => [2, 3]\n\nInvokes the method at `path` of `object`."},"lodash-keys-ea3b923":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash keys"],"body":["_.keys(${object})"],"description":"function Foo() {\n  this.a = 1;\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.keys(new Foo);\n// => ['a', 'b'] (iteration order is not guaranteed)\n\n_.keys('hi');\n// => ['0', '1']\n\nCreates an array of the own enumerable property names of `object`.\n\n**Note:** Non-object values are coerced to objects. See the\n[ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\nfor more details."},"lodash-keysin-e92c965":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash keysin"],"body":["_.keysIn(${object})"],"description":"function Foo() {\n  this.a = 1;\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.keysIn(new Foo);\n// => ['a', 'b', 'c'] (iteration order is not guaranteed)\n\nCreates an array of the own and inherited enumerable property names of `object`.\n\n**Note:** Non-object values are coerced to objects."},"lodash-mapkeys-f69167c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash mapkeys"],"body":["_.mapKeys(${object}, ${iteratee})"],"description":"_.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n  return key + value;\n});\n// => { 'a1': 1, 'b2': 2 }\n\nThe opposite of `_.mapValues`; this method creates an object with the\nsame values as `object` and keys generated by running each own enumerable\nstring keyed property of `object` thru `iteratee`. The iteratee is invoked\nwith three arguments: (value, key, object)."},"lodash-mapvalues-71982bc":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash mapvalues"],"body":["_.mapValues(${object}, ${iteratee})"],"description":"var users = {\n  'fred':    { 'user': 'fred',    'age': 40 },\n  'pebbles': { 'user': 'pebbles', 'age': 1 }\n};\n\n_.mapValues(users, function(o) { return o.age; });\n// => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n\n// The `_.property` iteratee shorthand.\n_.mapValues(users, 'age');\n// => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n\nCreates an object with the same keys as `object` and values generated\nby running each own enumerable string keyed property of `object` thru\n`iteratee`. The iteratee is invoked with three arguments:\n(value, key, object)."},"lodash-merge-9dab1d4":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash merge"],"body":["_.merge(${object}, ${sources})"],"description":"var object = {\n  'a': [{ 'b': 2 }, { 'd': 4 }]\n};\n\nvar other = {\n  'a': [{ 'c': 3 }, { 'e': 5 }]\n};\n\n_.merge(object, other);\n// => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n\nThis method is like `_.assign` except that it recursively merges own and\ninherited enumerable string keyed properties of source objects into the\ndestination object. Source properties that resolve to `undefined` are\nskipped if a destination value exists. Array and plain object properties\nare merged recursively. Other objects and value types are overridden by\nassignment. Source objects are applied from left to right. Subsequent\nsources overwrite property assignments of previous sources.\n\n**Note:** This method mutates `object`."},"lodash-mergewith-4297258":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash mergewith"],"body":["_.mergeWith(${object}, ${sources}, ${customizer})"],"description":"function customizer(objValue, srcValue) {\n  if (_.isArray(objValue)) {\n    return objValue.concat(srcValue);\n  }\n}\n\nvar object = { 'a': [1], 'b': [2] };\nvar other = { 'a': [3], 'b': [4] };\n\n_.mergeWith(object, other, customizer);\n// => { 'a': [1, 3], 'b': [2, 4] }\n\nThis method is like `_.merge` except that it accepts `customizer` which\nis invoked to produce the merged values of the destination and source\nproperties. If `customizer` returns `undefined`, merging is handled by the\nmethod instead. The `customizer` is invoked with six arguments:\n(objValue, srcValue, key, object, source, stack).\n\n**Note:** This method mutates `object`."},"lodash-omit-09ffc34":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash omit"],"body":["_.omit(${object}, ${paths})"],"description":"var object = { 'a': 1, 'b': '2', 'c': 3 };\n\n_.omit(object, ['a', 'c']);\n// => { 'b': '2' }\n\nThe opposite of `_.pick`; this method creates an object composed of the\nown and inherited enumerable property paths of `object` that are not omitted.\n\n**Note:** This method is considerably slower than `_.pick`."},"lodash-omitby-e510188":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash omitby"],"body":["_.omitBy(${object}, ${predicate})"],"description":"var object = { 'a': 1, 'b': '2', 'c': 3 };\n\n_.omitBy(object, _.isNumber);\n// => { 'b': '2' }\n\nThe opposite of `_.pickBy`; this method creates an object composed of\nthe own and inherited enumerable string keyed properties of `object` that\n`predicate` doesn't return truthy for. The predicate is invoked with two\narguments: (value, key)."},"lodash-pick-ead2d45":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash pick"],"body":["_.pick(${object}, ${paths})"],"description":"var object = { 'a': 1, 'b': '2', 'c': 3 };\n\n_.pick(object, ['a', 'c']);\n// => { 'a': 1, 'c': 3 }\n\nCreates an object composed of the picked `object` properties."},"lodash-pickby-989dcb8":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash pickby"],"body":["_.pickBy(${object}, ${predicate})"],"description":"var object = { 'a': 1, 'b': '2', 'c': 3 };\n\n_.pickBy(object, _.isNumber);\n// => { 'a': 1, 'c': 3 }\n\nCreates an object composed of the `object` properties `predicate` returns\ntruthy for. The predicate is invoked with two arguments: (value, key)."},"lodash-result-3f49c34":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash result"],"body":["_.result(${object}, ${path}, ${defaultValue})"],"description":"var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n\n_.result(object, 'a[0].b.c1');\n// => 3\n\n_.result(object, 'a[0].b.c2');\n// => 4\n\n_.result(object, 'a[0].b.c3', 'default');\n// => 'default'\n\n_.result(object, 'a[0].b.c3', _.constant('default'));\n// => 'default'\n\nThis method is like `_.get` except that if the resolved value is a\nfunction it's invoked with the `this` binding of its parent object and\nits result is returned."},"lodash-set-9d6e100":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash set"],"body":["_.set(${object}, ${path}, ${value})"],"description":"var object = { 'a': [{ 'b': { 'c': 3 } }] };\n\n_.set(object, 'a[0].b.c', 4);\nconsole.log(object.a[0].b.c);\n// => 4\n\n_.set(object, ['x', '0', 'y', 'z'], 5);\nconsole.log(object.x[0].y.z);\n// => 5\n\nSets the value at `path` of `object`. If a portion of `path` doesn't exist,\nit's created. Arrays are created for missing index properties while objects\nare created for all other missing properties. Use `_.setWith` to customize\n`path` creation.\n\n**Note:** This method mutates `object`."},"lodash-setwith-669b522":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash setwith"],"body":["_.setWith(${object}, ${path}, ${value}, ${customizer})"],"description":"var object = {};\n\n_.setWith(object, '[0][1]', 'a', Object);\n// => { '0': { '1': 'a' } }\n\nThis method is like `_.set` except that it accepts `customizer` which is\ninvoked to produce the objects of `path`.  If `customizer` returns `undefined`\npath creation is handled by the method instead. The `customizer` is invoked\nwith three arguments: (nsValue, key, nsObject).\n\n**Note:** This method mutates `object`."},"lodash-entries-35bf3be":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash entries"],"body":["_.entries(${object})"],"description":"function Foo() {\n  this.a = 1;\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.toPairs(new Foo);\n// => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n\nCreates an array of own enumerable string keyed-value pairs for `object`\nwhich can be consumed by `_.fromPairs`. If `object` is a map or set, its\nentries are returned."},"lodash-entriesin-1f3446c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash entriesin"],"body":["_.entriesIn(${object})"],"description":"function Foo() {\n  this.a = 1;\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.toPairsIn(new Foo);\n// => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n\nCreates an array of own and inherited enumerable string keyed-value pairs\nfor `object` which can be consumed by `_.fromPairs`. If `object` is a map\nor set, its entries are returned."},"lodash-transform-69001e9":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash transform"],"body":["_.transform(${object}, ${iteratee}, ${accumulator})"],"description":"_.transform([2, 3, 4], function(result, n) {\n  result.push(n *= n);\n  return n % 2 == 0;\n}, []);\n// => [4, 9]\n\n_.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n  (result[value] || (result[value] = [])).push(key);\n}, {});\n// => { '1': ['a', 'c'], '2': ['b'] }\n\nAn alternative to `_.reduce`; this method transforms `object` to a new\n`accumulator` object which is the result of running each of its own\nenumerable string keyed properties thru `iteratee`, with each invocation\npotentially mutating the `accumulator` object. If `accumulator` is not\nprovided, a new object with the same `[[Prototype]]` will be used. The\niteratee is invoked with four arguments: (accumulator, value, key, object).\nIteratee functions may exit iteration early by explicitly returning `false`."},"lodash-unset-1a4beb5":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash unset"],"body":["_.unset(${object}, ${path})"],"description":"var object = { 'a': [{ 'b': { 'c': 7 } }] };\n_.unset(object, 'a[0].b.c');\n// => true\n\nconsole.log(object);\n// => { 'a': [{ 'b': {} }] };\n\n_.unset(object, ['a', '0', 'b', 'c']);\n// => true\n\nconsole.log(object);\n// => { 'a': [{ 'b': {} }] };\n\nRemoves the property at `path` of `object`.\n\n**Note:** This method mutates `object`."},"lodash-update-7b6de4a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash update"],"body":["_.update(${object}, ${path}, ${updater})"],"description":"var object = { 'a': [{ 'b': { 'c': 3 } }] };\n\n_.update(object, 'a[0].b.c', function(n) { return n * n; });\nconsole.log(object.a[0].b.c);\n// => 9\n\n_.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\nconsole.log(object.x[0].y.z);\n// => 0\n\nThis method is like `_.set` except that accepts `updater` to produce the\nvalue to set. Use `_.updateWith` to customize `path` creation. The `updater`\nis invoked with one argument: (value).\n\n**Note:** This method mutates `object`."},"lodash-updatewith-a2078f2":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash updatewith"],"body":["_.updateWith(${object}, ${path}, ${updater}, ${customizer})"],"description":"var object = {};\n\n_.updateWith(object, '[0][1]', _.constant('a'), Object);\n// => { '0': { '1': 'a' } }\n\nThis method is like `_.update` except that it accepts `customizer` which is\ninvoked to produce the objects of `path`.  If `customizer` returns `undefined`\npath creation is handled by the method instead. The `customizer` is invoked\nwith three arguments: (nsValue, key, nsObject).\n\n**Note:** This method mutates `object`."},"lodash-values-04293a4":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash values"],"body":["_.values(${object})"],"description":"function Foo() {\n  this.a = 1;\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.values(new Foo);\n// => [1, 2] (iteration order is not guaranteed)\n\n_.values('hi');\n// => ['h', 'i']\n\nCreates an array of the own enumerable string keyed property values of `object`.\n\n**Note:** Non-object values are coerced to objects."},"lodash-valuesin-aabb462":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash valuesin"],"body":["_.valuesIn(${object})"],"description":"function Foo() {\n  this.a = 1;\n  this.b = 2;\n}\n\nFoo.prototype.c = 3;\n\n_.valuesIn(new Foo);\n// => [1, 2, 3] (iteration order is not guaranteed)\n\nCreates an array of the own and inherited enumerable string keyed property\nvalues of `object`.\n\n**Note:** Non-object values are coerced to objects."},"lodash-clamp-eca5d5c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash clamp"],"body":["_.clamp(${number}, ${lower}, ${upper})"],"description":"_.clamp(-10, -5, 5);\n// => -5\n\n_.clamp(10, -5, 5);\n// => 5\n\nClamps `number` within the inclusive `lower` and `upper` bounds."},"lodash-inrange-c163a53":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash inrange"],"body":["_.inRange(${number}, ${start}, ${end})"],"description":"_.inRange(3, 2, 4);\n// => true\n\n_.inRange(4, 8);\n// => true\n\n_.inRange(4, 2);\n// => false\n\n_.inRange(2, 2);\n// => false\n\n_.inRange(1.2, 2);\n// => true\n\n_.inRange(5.2, 4);\n// => false\n\n_.inRange(-3, -2, -6);\n// => true\n\nChecks if `n` is between `start` and up to, but not including, `end`. If\n`end` is not specified, it's set to `start` with `start` then set to `0`.\nIf `start` is greater than `end` the params are swapped to support\nnegative ranges."},"lodash-random-b9dd61d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash random"],"body":["_.random(${lower}, ${upper}, ${floating})"],"description":"_.random(0, 5);\n// => an integer between 0 and 5\n\n_.random(5);\n// => also an integer between 0 and 5\n\n_.random(5, true);\n// => a floating-point number between 0 and 5\n\n_.random(1.2, 5.2);\n// => a floating-point number between 1.2 and 5.2\n\nProduces a random number between the inclusive `lower` and `upper` bounds.\nIf only one argument is provided a number between `0` and the given number\nis returned. If `floating` is `true`, or either `lower` or `upper` are\nfloats, a floating-point number is returned instead of an integer.\n\n**Note:** JavaScript follows the IEEE-754 standard for resolving\nfloating-point values which can produce unexpected results."},"lodash-camelcase-8d811d5":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash camelcase"],"body":["_.camelCase(${string})"],"description":"_.camelCase('Foo Bar');\n// => 'fooBar'\n\n_.camelCase('--foo-bar--');\n// => 'fooBar'\n\n_.camelCase('__FOO_BAR__');\n// => 'fooBar'\n\nConverts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase)."},"lodash-capitalize-5b35cb8":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash capitalize"],"body":["_.capitalize(${string})"],"description":"_.capitalize('FRED');\n// => 'Fred'\n\nConverts the first character of `string` to upper case and the remaining\nto lower case."},"lodash-deburr-912da0e":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash deburr"],"body":["_.deburr(${string})"],"description":"_.deburr('déjà vu');\n// => 'deja vu'\n\nDeburrs `string` by converting\n[Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\nand [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\nletters to basic Latin letters and removing\n[combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks)."},"lodash-endswith-d3d3ee0":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash endswith"],"body":["_.endsWith(${string}, ${target}, ${position})"],"description":"_.endsWith('abc', 'c');\n// => true\n\n_.endsWith('abc', 'b');\n// => false\n\n_.endsWith('abc', 'b', 2);\n// => true\n\nChecks if `string` ends with the given target string."},"lodash-escape-cc5c5c3":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash escape"],"body":["_.escape(${string})"],"description":"_.escape('fred, barney, & pebbles');\n// => 'fred, barney, &amp; pebbles'\n\nConverts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\ncorresponding HTML entities.\n\n**Note:** No other characters are escaped. To escape additional\ncharacters use a third-party library like [_he_](https://mths.be/he).\n\nThough the \">\" character is escaped for symmetry, characters like\n\">\" and \"/\" don't need escaping in HTML and have no special meaning\nunless they're part of a tag or unquoted attribute value. See\n[Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n(under \"semi-related fun fact\") for more details.\n\nWhen working with HTML you should always\n[quote attribute values](http://wonko.com/post/html-escaping) to reduce\nXSS vectors."},"lodash-escaperegexp-c2ce775":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash escaperegexp"],"body":["_.escapeRegExp(${string})"],"description":"_.escapeRegExp('[lodash](https://lodash.com/)');\n// => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n\nEscapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n\"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`."},"lodash-kebabcase-2ed7ea8":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash kebabcase"],"body":["_.kebabCase(${string})"],"description":"_.kebabCase('Foo Bar');\n// => 'foo-bar'\n\n_.kebabCase('fooBar');\n// => 'foo-bar'\n\n_.kebabCase('__FOO_BAR__');\n// => 'foo-bar'\n\nConverts `string` to\n[kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles)."},"lodash-lowercase-de1ba86":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash lowercase"],"body":["_.lowerCase(${string})"],"description":"_.lowerCase('--Foo-Bar--');\n// => 'foo bar'\n\n_.lowerCase('fooBar');\n// => 'foo bar'\n\n_.lowerCase('__FOO_BAR__');\n// => 'foo bar'\n\nConverts `string`, as space separated words, to lower case."},"lodash-lowerfirst-68f58ef":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash lowerfirst"],"body":["_.lowerFirst(${string})"],"description":"_.lowerFirst('Fred');\n// => 'fred'\n\n_.lowerFirst('FRED');\n// => 'fRED'\n\nConverts the first character of `string` to lower case."},"lodash-pad-bf38c87":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash pad"],"body":["_.pad(${string}, ${length}, ${chars})"],"description":"_.pad('abc', 8);\n// => '  abc   '\n\n_.pad('abc', 8, '_-');\n// => '_-abc_-_'\n\n_.pad('abc', 3);\n// => 'abc'\n\nPads `string` on the left and right sides if it's shorter than `length`.\nPadding characters are truncated if they can't be evenly divided by `length`."},"lodash-padend-0cc5443":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash padend"],"body":["_.padEnd(${string}, ${length}, ${chars})"],"description":"_.padEnd('abc', 6);\n// => 'abc   '\n\n_.padEnd('abc', 6, '_-');\n// => 'abc_-_'\n\n_.padEnd('abc', 3);\n// => 'abc'\n\nPads `string` on the right side if it's shorter than `length`. Padding\ncharacters are truncated if they exceed `length`."},"lodash-padstart-fa5731c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash padstart"],"body":["_.padStart(${string}, ${length}, ${chars})"],"description":"_.padStart('abc', 6);\n// => '   abc'\n\n_.padStart('abc', 6, '_-');\n// => '_-_abc'\n\n_.padStart('abc', 3);\n// => 'abc'\n\nPads `string` on the left side if it's shorter than `length`. Padding\ncharacters are truncated if they exceed `length`."},"lodash-parseint-a393e5d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash parseint"],"body":["_.parseInt(${string}, ${radix})"],"description":"_.parseInt('08');\n// => 8\n\n_.map(['6', '08', '10'], _.parseInt);\n// => [6, 8, 10]\n\nConverts `string` to an integer of the specified radix. If `radix` is\n`undefined` or `0`, a `radix` of `10` is used unless `value` is a\nhexadecimal, in which case a `radix` of `16` is used.\n\n**Note:** This method aligns with the\n[ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`."},"lodash-repeat-d30d137":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash repeat"],"body":["_.repeat(${string}, ${n})"],"description":"_.repeat('*', 3);\n// => '***'\n\n_.repeat('abc', 2);\n// => 'abcabc'\n\n_.repeat('abc', 0);\n// => ''\n\nRepeats the given string `n` times."},"lodash-replace-2493893":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash replace"],"body":["_.replace(${string}, ${pattern}, ${replacement})"],"description":"_.replace('Hi Fred', 'Fred', 'Barney');\n// => 'Hi Barney'\n\nReplaces matches for `pattern` in `string` with `replacement`.\n\n**Note:** This method is based on\n[`String#replace`](https://mdn.io/String/replace)."},"lodash-snakecase-e2bc35f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash snakecase"],"body":["_.snakeCase(${string})"],"description":"_.snakeCase('Foo Bar');\n// => 'foo_bar'\n\n_.snakeCase('fooBar');\n// => 'foo_bar'\n\n_.snakeCase('--FOO-BAR--');\n// => 'foo_bar'\n\nConverts `string` to\n[snake case](https://en.wikipedia.org/wiki/Snake_case)."},"lodash-split-0e73a1e":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash split"],"body":["_.split(${string}, ${separator}, ${limit})"],"description":"_.split('a-b-c', '-', 2);\n// => ['a', 'b']\n\nSplits `string` by `separator`.\n\n**Note:** This method is based on\n[`String#split`](https://mdn.io/String/split)."},"lodash-startcase-2b1ea21":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash startcase"],"body":["_.startCase(${string})"],"description":"_.startCase('--foo-bar--');\n// => 'Foo Bar'\n\n_.startCase('fooBar');\n// => 'Foo Bar'\n\n_.startCase('__FOO_BAR__');\n// => 'FOO BAR'\n\nConverts `string` to\n[start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage)."},"lodash-startswith-8924d3c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash startswith"],"body":["_.startsWith(${string}, ${target}, ${position})"],"description":"_.startsWith('abc', 'a');\n// => true\n\n_.startsWith('abc', 'b');\n// => false\n\n_.startsWith('abc', 'b', 1);\n// => true\n\nChecks if `string` starts with the given target string."},"lodash-template-1ba237d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash template"],"body":["_.template(${string}, ${options}, ${options.escape}, ${options.evaluate}, ${options.imports}, ${options.interpolate}, ${options.sourceURL}, ${options.variable})"],"description":"// Use the \"interpolate\" delimiter to create a compiled template.\nvar compiled = _.template('hello <%= user %>!');\ncompiled({ 'user': 'fred' });\n// => 'hello fred!'\n\n// Use the HTML \"escape\" delimiter to escape data property values.\nvar compiled = _.template('<b><%- value %></b>');\ncompiled({ 'value': '<script>' });\n// => '<b>&lt;script&gt;</b>'\n\n// Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\nvar compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\ncompiled({ 'users': ['fred', 'barney'] });\n// => '<li>fred</li><li>barney</li>'\n\n// Use the internal `print` function in \"evaluate\" delimiters.\nvar compiled = _.template('<% print(\"hello \" + user); %>!');\ncompiled({ 'user': 'barney' });\n// => 'hello barney!'\n\n// Use the ES template literal delimiter as an \"interpolate\" delimiter.\n// Disable support by replacing the \"interpolate\" delimiter.\nvar compiled = _.template('hello ${ user }!');\ncompiled({ 'user': 'pebbles' });\n// => 'hello pebbles!'\n\n// Use backslashes to treat delimiters as plain text.\nvar compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\ncompiled({ 'value': 'ignored' });\n// => '<%- value %>'\n\n// Use the `imports` option to import `jQuery` as `jq`.\nvar text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\nvar compiled = _.template(text, { 'imports': { 'jq': jQuery } });\ncompiled({ 'users': ['fred', 'barney'] });\n// => '<li>fred</li><li>barney</li>'\n\n// Use the `sourceURL` option to specify a custom sourceURL for the template.\nvar compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\ncompiled(data);\n// => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n\n// Use the `variable` option to ensure a with-statement isn't used in the compiled template.\nvar compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\ncompiled.source;\n// => function(data) {\n//   var __t, __p = '';\n//   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n//   return __p;\n// }\n\n// Use custom template delimiters.\n_.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\nvar compiled = _.template('hello {{ user }}!');\ncompiled({ 'user': 'mustache' });\n// => 'hello mustache!'\n\n// Use the `source` property to inline compiled templates for meaningful\n// line numbers in error messages and stack traces.\nfs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n  var JST = {\\\n    \"main\": ' + _.template(mainText).source + '\\\n  };\\\n');\n\nCreates a compiled template function that can interpolate data properties\nin \"interpolate\" delimiters, HTML-escape interpolated data properties in\n\"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\nproperties may be accessed as free variables in the template. If a setting\nobject is given, it takes precedence over `_.templateSettings` values.\n\n**Note:** In the development build `_.template` utilizes\n[sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\nfor easier debugging.\n\nFor more information on precompiling templates see\n[lodash's custom builds documentation](https://lodash.com/custom-builds).\n\nFor more information on Chrome extension sandboxes see\n[Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval)."},"lodash-tolower-fac1f13":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash tolower"],"body":["_.toLower(${string})"],"description":"_.toLower('--Foo-Bar--');\n// => '--foo-bar--'\n\n_.toLower('fooBar');\n// => 'foobar'\n\n_.toLower('__FOO_BAR__');\n// => '__foo_bar__'\n\nConverts `string`, as a whole, to lower case just like\n[String#toLowerCase](https://mdn.io/toLowerCase)."},"lodash-toupper-dc852ef":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash toupper"],"body":["_.toUpper(${string})"],"description":"_.toUpper('--foo-bar--');\n// => '--FOO-BAR--'\n\n_.toUpper('fooBar');\n// => 'FOOBAR'\n\n_.toUpper('__foo_bar__');\n// => '__FOO_BAR__'\n\nConverts `string`, as a whole, to upper case just like\n[String#toUpperCase](https://mdn.io/toUpperCase)."},"lodash-trim-ca5d3fc":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash trim"],"body":["_.trim(${string}, ${chars})"],"description":"_.trim('  abc  ');\n// => 'abc'\n\n_.trim('-_-abc-_-', '_-');\n// => 'abc'\n\n_.map(['  foo  ', '  bar  '], _.trim);\n// => ['foo', 'bar']\n\nRemoves leading and trailing whitespace or specified characters from `string`."},"lodash-trimend-31ddc94":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash trimend"],"body":["_.trimEnd(${string}, ${chars})"],"description":"_.trimEnd('  abc  ');\n// => '  abc'\n\n_.trimEnd('-_-abc-_-', '_-');\n// => '-_-abc'\n\nRemoves trailing whitespace or specified characters from `string`."},"lodash-trimstart-9209895":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash trimstart"],"body":["_.trimStart(${string}, ${chars})"],"description":"_.trimStart('  abc  ');\n// => 'abc  '\n\n_.trimStart('-_-abc-_-', '_-');\n// => 'abc-_-'\n\nRemoves leading whitespace or specified characters from `string`."},"lodash-truncate-4f1b484":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash truncate"],"body":["_.truncate(${string}, ${options}, ${options.length}, ${options.omission}, ${options.separator})"],"description":"_.truncate('hi-diddly-ho there, neighborino');\n// => 'hi-diddly-ho there, neighbo...'\n\n_.truncate('hi-diddly-ho there, neighborino', {\n  'length': 24,\n  'separator': ' '\n});\n// => 'hi-diddly-ho there,...'\n\n_.truncate('hi-diddly-ho there, neighborino', {\n  'length': 24,\n  'separator': /,? +/\n});\n// => 'hi-diddly-ho there...'\n\n_.truncate('hi-diddly-ho there, neighborino', {\n  'omission': ' [...]'\n});\n// => 'hi-diddly-ho there, neig [...]'\n\nTruncates `string` if it's longer than the given maximum string length.\nThe last characters of the truncated string are replaced with the omission\nstring which defaults to \"...\"."},"lodash-unescape-ace0022":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash unescape"],"body":["_.unescape(${string})"],"description":"_.unescape('fred, barney, &amp; pebbles');\n// => 'fred, barney, & pebbles'\n\nThe inverse of `_.escape`; this method converts the HTML entities\n`&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\ntheir corresponding characters.\n\n**Note:** No other HTML entities are unescaped. To unescape additional\nHTML entities use a third-party library like [_he_](https://mths.be/he)."},"lodash-uppercase-ce37c73":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash uppercase"],"body":["_.upperCase(${string})"],"description":"_.upperCase('--foo-bar');\n// => 'FOO BAR'\n\n_.upperCase('fooBar');\n// => 'FOO BAR'\n\n_.upperCase('__foo_bar__');\n// => 'FOO BAR'\n\nConverts `string`, as space separated words, to upper case."},"lodash-upperfirst-d2e4ad0":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash upperfirst"],"body":["_.upperFirst(${string})"],"description":"_.upperFirst('fred');\n// => 'Fred'\n\n_.upperFirst('FRED');\n// => 'FRED'\n\nConverts the first character of `string` to upper case."},"lodash-words-498ccc9":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash words"],"body":["_.words(${string}, ${pattern})"],"description":"_.words('fred, barney, & pebbles');\n// => ['fred', 'barney', 'pebbles']\n\n_.words('fred, barney, & pebbles', /[^, ]+/g);\n// => ['fred', 'barney', '&', 'pebbles']\n\nSplits `string` into an array of its words."},"lodash-attempt-22c3494":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash attempt"],"body":["_.attempt(${func}, ${args})"],"description":"// Avoid throwing errors for invalid selectors.\nvar elements = _.attempt(function(selector) {\n  return document.querySelectorAll(selector);\n}, '>_>');\n\nif (_.isError(elements)) {\n  elements = [];\n}\n\nAttempts to invoke `func`, returning either the result or the caught error\nobject. Any additional arguments are provided to `func` when it's invoked."},"lodash-bindall-e634775":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash bindall"],"body":["_.bindAll(${object}, ${methodNames})"],"description":"var view = {\n  'label': 'docs',\n  'click': function() {\n    console.log('clicked ' + this.label);\n  }\n};\n\n_.bindAll(view, ['click']);\njQuery(element).on('click', view.click);\n// => Logs 'clicked docs' when clicked.\n\nBinds methods of an object to the object itself, overwriting the existing\nmethod.\n\n**Note:** This method doesn't set the \"length\" property of bound functions."},"lodash-cond-5b26006":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash cond"],"body":["_.cond(${pairs})"],"description":"var func = _.cond([\n  [_.matches({ 'a': 1 }),           _.constant('matches A')],\n  [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n  [_.stubTrue,                      _.constant('no match')]\n]);\n\nfunc({ 'a': 1, 'b': 2 });\n// => 'matches A'\n\nfunc({ 'a': 0, 'b': 1 });\n// => 'matches B'\n\nfunc({ 'a': '1', 'b': '2' });\n// => 'no match'\n\nCreates a function that iterates over `pairs` and invokes the corresponding\nfunction of the first predicate to return truthy. The predicate-function\npairs are invoked with the `this` binding and arguments of the created\nfunction."},"lodash-conforms-b56559e":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash conforms"],"body":["_.conforms(${source})"],"description":"var objects = [\n  { 'a': 2, 'b': 1 },\n  { 'a': 1, 'b': 2 }\n];\n\n_.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n// => [{ 'a': 1, 'b': 2 }]\n\nCreates a function that invokes the predicate properties of `source` with\nthe corresponding property values of a given object, returning `true` if\nall predicates return truthy, else `false`.\n\n**Note:** The created function is equivalent to `_.conformsTo` with\n`source` partially applied."},"lodash-constant-7d9bb14":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash constant"],"body":["_.constant(${value})"],"description":"var objects = _.times(2, _.constant({ 'a': 1 }));\n\nconsole.log(objects);\n// => [{ 'a': 1 }, { 'a': 1 }]\n\nconsole.log(objects[0] === objects[1]);\n// => true\n\nCreates a function that returns `value`."},"lodash-defaultto-8775dbb":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash defaultto"],"body":["_.defaultTo(${value}, ${defaultValue})"],"description":"_.defaultTo(1, 10);\n// => 1\n\n_.defaultTo(undefined, 10);\n// => 10\n\nChecks `value` to determine whether a default value should be returned in\nits place. The `defaultValue` is returned if `value` is `NaN`, `null`,\nor `undefined`."},"lodash-flow-962ea59":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash flow"],"body":["_.flow(${funcs})"],"description":"function square(n) {\n  return n * n;\n}\n\nvar addSquare = _.flow([_.add, square]);\naddSquare(1, 2);\n// => 9\n\nCreates a function that returns the result of invoking the given functions\nwith the `this` binding of the created function, where each successive\ninvocation is supplied the return value of the previous."},"lodash-flowright-42106e7":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash flowright"],"body":["_.flowRight(${funcs})"],"description":"function square(n) {\n  return n * n;\n}\n\nvar addSquare = _.flowRight([square, _.add]);\naddSquare(1, 2);\n// => 9\n\nThis method is like `_.flow` except that it creates a function that\ninvokes the given functions from right to left."},"lodash-identity-dddc5c9":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash identity"],"body":["_.identity(${value})"],"description":"var object = { 'a': 1 };\n\nconsole.log(_.identity(object) === object);\n// => true\n\nThis method returns the first argument it receives."},"lodash-iteratee-ddb0f61":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash iteratee"],"body":["_.iteratee(${func})"],"description":"var users = [\n  { 'user': 'barney', 'age': 36, 'active': true },\n  { 'user': 'fred',   'age': 40, 'active': false }\n];\n\n// The `_.matches` iteratee shorthand.\n_.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n// => [{ 'user': 'barney', 'age': 36, 'active': true }]\n\n// The `_.matchesProperty` iteratee shorthand.\n_.filter(users, _.iteratee(['user', 'fred']));\n// => [{ 'user': 'fred', 'age': 40 }]\n\n// The `_.property` iteratee shorthand.\n_.map(users, _.iteratee('user'));\n// => ['barney', 'fred']\n\n// Create custom iteratee shorthands.\n_.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n  return !_.isRegExp(func) ? iteratee(func) : function(string) {\n    return func.test(string);\n  };\n});\n\n_.filter(['abc', 'def'], /ef/);\n// => ['def']\n\nCreates a function that invokes `func` with the arguments of the created\nfunction. If `func` is a property name, the created function returns the\nproperty value for a given element. If `func` is an array or object, the\ncreated function returns `true` for elements that contain the equivalent\nsource properties, otherwise it returns `false`."},"lodash-matches-7bf7a2d":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash matches"],"body":["_.matches(${source})"],"description":"var objects = [\n  { 'a': 1, 'b': 2, 'c': 3 },\n  { 'a': 4, 'b': 5, 'c': 6 }\n];\n\n_.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n// => [{ 'a': 4, 'b': 5, 'c': 6 }]\n\nCreates a function that performs a partial deep comparison between a given\nobject and `source`, returning `true` if the given object has equivalent\nproperty values, else `false`.\n\n**Note:** The created function is equivalent to `_.isMatch` with `source`\npartially applied.\n\nPartial comparisons will match empty array and empty object `source`\nvalues against any array or object value, respectively. See `_.isEqual`\nfor a list of supported value comparisons."},"lodash-matchesproperty-8a63542":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash matchesproperty"],"body":["_.matchesProperty(${path}, ${srcValue})"],"description":"var objects = [\n  { 'a': 1, 'b': 2, 'c': 3 },\n  { 'a': 4, 'b': 5, 'c': 6 }\n];\n\n_.find(objects, _.matchesProperty('a', 4));\n// => { 'a': 4, 'b': 5, 'c': 6 }\n\nCreates a function that performs a partial deep comparison between the\nvalue at `path` of a given object to `srcValue`, returning `true` if the\nobject value is equivalent, else `false`.\n\n**Note:** Partial comparisons will match empty array and empty object\n`srcValue` values against any array or object value, respectively. See\n`_.isEqual` for a list of supported value comparisons."},"lodash-method-2e29635":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash method"],"body":["_.method(${path}, ${args})"],"description":"var objects = [\n  { 'a': { 'b': _.constant(2) } },\n  { 'a': { 'b': _.constant(1) } }\n];\n\n_.map(objects, _.method('a.b'));\n// => [2, 1]\n\n_.map(objects, _.method(['a', 'b']));\n// => [2, 1]\n\nCreates a function that invokes the method at `path` of a given object.\nAny additional arguments are provided to the invoked method."},"lodash-methodof-4159e4c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash methodof"],"body":["_.methodOf(${object}, ${args})"],"description":"var array = _.times(3, _.constant),\n    object = { 'a': array, 'b': array, 'c': array };\n\n_.map(['a[2]', 'c[0]'], _.methodOf(object));\n// => [2, 0]\n\n_.map([['a', '2'], ['c', '0']], _.methodOf(object));\n// => [2, 0]\n\nThe opposite of `_.method`; this method creates a function that invokes\nthe method at a given path of `object`. Any additional arguments are\nprovided to the invoked method."},"lodash-mixin-50d8180":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash mixin"],"body":["_.mixin(${object}, ${source}, ${options}, ${options.chain})"],"description":"function vowels(string) {\n  return _.filter(string, function(v) {\n    return /[aeiou]/i.test(v);\n  });\n}\n\n_.mixin({ 'vowels': vowels });\n_.vowels('fred');\n// => ['e']\n\n_('fred').vowels().value();\n// => ['e']\n\n_.mixin({ 'vowels': vowels }, { 'chain': false });\n_('fred').vowels();\n// => ['e']\n\nAdds all own enumerable string keyed function properties of a source\nobject to the destination object. If `object` is a function, then methods\nare added to its prototype as well.\n\n**Note:** Use `_.runInContext` to create a pristine `lodash` function to\navoid conflicts caused by modifying the original."},"lodash-noconflict-4d34b19":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash noconflict"],"body":["_.noConflict()"],"description":"var lodash = _.noConflict();\n\nReverts the `_` variable to its previous value and returns a reference to\nthe `lodash` function."},"lodash-noop-0d96d4a":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash noop"],"body":["_.noop()"],"description":"_.times(2, _.noop);\n// => [undefined, undefined]\n\nThis method returns `undefined`."},"lodash-ntharg-5d57c46":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash ntharg"],"body":["_.nthArg(${n})"],"description":"var func = _.nthArg(1);\nfunc('a', 'b', 'c', 'd');\n// => 'b'\n\nvar func = _.nthArg(-2);\nfunc('a', 'b', 'c', 'd');\n// => 'c'\n\nCreates a function that gets the argument at index `n`. If `n` is negative,\nthe nth argument from the end is returned."},"lodash-over-089a66b":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash over"],"body":["_.over(${iteratees})"],"description":"var func = _.over([Math.max, Math.min]);\n\nfunc(1, 2, 3, 4);\n// => [4, 1]\n\nCreates a function that invokes `iteratees` with the arguments it receives\nand returns their results."},"lodash-overevery-bd5bbdc":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash overevery"],"body":["_.overEvery(${predicates})"],"description":"var func = _.overEvery([Boolean, isFinite]);\n\nfunc('1');\n// => true\n\nfunc(null);\n// => false\n\nfunc(NaN);\n// => false\n\nCreates a function that checks if **all** of the `predicates` return\ntruthy when invoked with the arguments it receives."},"lodash-oversome-fcd7be6":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash oversome"],"body":["_.overSome(${predicates})"],"description":"var func = _.overSome([Boolean, isFinite]);\n\nfunc('1');\n// => true\n\nfunc(null);\n// => true\n\nfunc(NaN);\n// => false\n\nCreates a function that checks if **any** of the `predicates` return\ntruthy when invoked with the arguments it receives."},"lodash-property-1690155":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash property"],"body":["_.property(${path})"],"description":"var objects = [\n  { 'a': { 'b': 2 } },\n  { 'a': { 'b': 1 } }\n];\n\n_.map(objects, _.property('a.b'));\n// => [2, 1]\n\n_.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n// => [1, 2]\n\nCreates a function that returns the value at `path` of a given object."},"lodash-propertyof-1ca91f8":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash propertyof"],"body":["_.propertyOf(${object})"],"description":"var array = [0, 1, 2],\n    object = { 'a': array, 'b': array, 'c': array };\n\n_.map(['a[2]', 'c[0]'], _.propertyOf(object));\n// => [2, 0]\n\n_.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n// => [2, 0]\n\nThe opposite of `_.property`; this method creates a function that returns\nthe value at a given path of `object`."},"lodash-range-884731e":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash range"],"body":["_.range(${start}, ${end}, ${step})"],"description":"_.range(4);\n// => [0, 1, 2, 3]\n\n_.range(-4);\n// => [0, -1, -2, -3]\n\n_.range(1, 5);\n// => [1, 2, 3, 4]\n\n_.range(0, 20, 5);\n// => [0, 5, 10, 15]\n\n_.range(0, -4, -1);\n// => [0, -1, -2, -3]\n\n_.range(1, 4, 0);\n// => [1, 1, 1]\n\n_.range(0);\n// => []\n\nCreates an array of numbers (positive and/or negative) progressing from\n`start` up to, but not including, `end`. A step of `-1` is used if a negative\n`start` is specified without an `end` or `step`. If `end` is not specified,\nit's set to `start` with `start` then set to `0`.\n\n**Note:** JavaScript follows the IEEE-754 standard for resolving\nfloating-point values which can produce unexpected results."},"lodash-rangeright-80cfc48":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash rangeright"],"body":["_.rangeRight(${start}, ${end}, ${step})"],"description":"_.rangeRight(4);\n// => [3, 2, 1, 0]\n\n_.rangeRight(-4);\n// => [-3, -2, -1, 0]\n\n_.rangeRight(1, 5);\n// => [4, 3, 2, 1]\n\n_.rangeRight(0, 20, 5);\n// => [15, 10, 5, 0]\n\n_.rangeRight(0, -4, -1);\n// => [-3, -2, -1, 0]\n\n_.rangeRight(1, 4, 0);\n// => [1, 1, 1]\n\n_.rangeRight(0);\n// => []\n\nThis method is like `_.range` except that it populates values in\ndescending order."},"lodash-stubarray-5f76aaa":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash stubarray"],"body":["_.stubArray()"],"description":"var arrays = _.times(2, _.stubArray);\n\nconsole.log(arrays);\n// => [[], []]\n\nconsole.log(arrays[0] === arrays[1]);\n// => false\n\nThis method returns a new empty array."},"lodash-stubfalse-ca45a30":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash stubfalse"],"body":["_.stubFalse()"],"description":"_.times(2, _.stubFalse);\n// => [false, false]\n\nThis method returns `false`."},"lodash-stubobject-5744460":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash stubobject"],"body":["_.stubObject()"],"description":"var objects = _.times(2, _.stubObject);\n\nconsole.log(objects);\n// => [{}, {}]\n\nconsole.log(objects[0] === objects[1]);\n// => false\n\nThis method returns a new empty object."},"lodash-stubstring-1f6c1cd":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash stubstring"],"body":["_.stubString()"],"description":"_.times(2, _.stubString);\n// => ['', '']\n\nThis method returns an empty string."},"lodash-stubtrue-427dd4b":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash stubtrue"],"body":["_.stubTrue()"],"description":"_.times(2, _.stubTrue);\n// => [true, true]\n\nThis method returns `true`."},"lodash-times-2758f01":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash times"],"body":["_.times(${n}, ${iteratee})"],"description":"_.times(3, String);\n// => ['0', '1', '2']\n\n _.times(4, _.constant(0));\n// => [0, 0, 0, 0]\n\nInvokes the iteratee `n` times, returning an array of the results of\neach invocation. The iteratee is invoked with one argument; (index)."},"lodash-topath-17e455c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash topath"],"body":["_.toPath(${value})"],"description":"_.toPath('a.b.c');\n// => ['a', 'b', 'c']\n\n_.toPath('a[0].b.c');\n// => ['a', '0', 'b', 'c']\n\nConverts `value` to a property path array."},"lodash-uniqueid-a2fdccb":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash uniqueid"],"body":["_.uniqueId(${prefix})"],"description":"_.uniqueId('contact_');\n// => 'contact_104'\n\n_.uniqueId();\n// => '105'\n\nGenerates a unique ID. If `prefix` is given, the ID is appended to it."},"lodash-add-2f87074":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash add"],"body":["_.add(${augend}, ${addend})"],"description":"_.add(6, 4);\n// => 10\n\nAdds two numbers."},"lodash-ceil-91bf90f":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash ceil"],"body":["_.ceil(${number}, ${precision})"],"description":"_.ceil(4.006);\n// => 5\n\n_.ceil(6.004, 2);\n// => 6.01\n\n_.ceil(6040, -2);\n// => 6100\n\nComputes `number` rounded up to `precision`."},"lodash-divide-ecd7e39":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash divide"],"body":["_.divide(${dividend}, ${divisor})"],"description":"_.divide(6, 4);\n// => 1.5\n\nDivide two numbers."},"lodash-floor-bb03784":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash floor"],"body":["_.floor(${number}, ${precision})"],"description":"_.floor(4.006);\n// => 4\n\n_.floor(0.046, 2);\n// => 0.04\n\n_.floor(4060, -2);\n// => 4000\n\nComputes `number` rounded down to `precision`."},"lodash-max-7bdf17c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash max"],"body":["_.max(${array})"],"description":"_.max([4, 2, 8, 6]);\n// => 8\n\n_.max([]);\n// => undefined\n\nComputes the maximum value of `array`. If `array` is empty or falsey,\n`undefined` is returned."},"lodash-maxby-27ace96":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash maxby"],"body":["_.maxBy(${array}, ${iteratee})"],"description":"var objects = [{ 'n': 1 }, { 'n': 2 }];\n\n_.maxBy(objects, function(o) { return o.n; });\n// => { 'n': 2 }\n\n// The `_.property` iteratee shorthand.\n_.maxBy(objects, 'n');\n// => { 'n': 2 }\n\nThis method is like `_.max` except that it accepts `iteratee` which is\ninvoked for each element in `array` to generate the criterion by which\nthe value is ranked. The iteratee is invoked with one argument: (value)."},"lodash-mean-f779c03":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash mean"],"body":["_.mean(${array})"],"description":"_.mean([4, 2, 8, 6]);\n// => 5\n\nComputes the mean of the values in `array`."},"lodash-meanby-1e30dee":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash meanby"],"body":["_.meanBy(${array}, ${iteratee})"],"description":"var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n\n_.meanBy(objects, function(o) { return o.n; });\n// => 5\n\n// The `_.property` iteratee shorthand.\n_.meanBy(objects, 'n');\n// => 5\n\nThis method is like `_.mean` except that it accepts `iteratee` which is\ninvoked for each element in `array` to generate the value to be averaged.\nThe iteratee is invoked with one argument: (value)."},"lodash-min-14696f6":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash min"],"body":["_.min(${array})"],"description":"_.min([4, 2, 8, 6]);\n// => 2\n\n_.min([]);\n// => undefined\n\nComputes the minimum value of `array`. If `array` is empty or falsey,\n`undefined` is returned."},"lodash-minby-868a77c":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash minby"],"body":["_.minBy(${array}, ${iteratee})"],"description":"var objects = [{ 'n': 1 }, { 'n': 2 }];\n\n_.minBy(objects, function(o) { return o.n; });\n// => { 'n': 1 }\n\n// The `_.property` iteratee shorthand.\n_.minBy(objects, 'n');\n// => { 'n': 1 }\n\nThis method is like `_.min` except that it accepts `iteratee` which is\ninvoked for each element in `array` to generate the criterion by which\nthe value is ranked. The iteratee is invoked with one argument: (value)."},"lodash-multiply-8a7eac6":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash multiply"],"body":["_.multiply(${multiplier}, ${multiplicand})"],"description":"_.multiply(6, 4);\n// => 24\n\nMultiply two numbers."},"lodash-round-23fbe70":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash round"],"body":["_.round(${number}, ${precision})"],"description":"_.round(4.006);\n// => 4\n\n_.round(4.006, 2);\n// => 4.01\n\n_.round(4060, -2);\n// => 4100\n\nComputes `number` rounded to `precision`."},"lodash-subtract-f23ec1e":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash subtract"],"body":["_.subtract(${minuend}, ${subtrahend})"],"description":"_.subtract(6, 4);\n// => 2\n\nSubtract two numbers."},"lodash-sum-eaf5e49":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sum"],"body":["_.sum(${array})"],"description":"_.sum([4, 2, 8, 6]);\n// => 20\n\nComputes the sum of the values in `array`."},"lodash-sumby-ca5c77b":{"scope":"javascript,javascriptreact,typescript,typescriptreact","prefix":["lodash sumby"],"body":["_.sumBy(${array}, ${iteratee})"],"description":"var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n\n_.sumBy(objects, function(o) { return o.n; });\n// => 20\n\n// The `_.property` iteratee shorthand.\n_.sumBy(objects, 'n');\n// => 20\n\nThis method is like `_.sum` except that it accepts `iteratee` which is\ninvoked for each element in `array` to generate the value to be summed.\nThe iteratee is invoked with one argument: (value)."},"import-react-7ecbe8d":{"prefix":["react import","imr"],"body":["import React from 'react'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"import React"},"import-react-component-64005be":{"prefix":["react import component","imrc"],"body":["import React, { Component } from 'react'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":""},"import-react-component-prop-types-fa5a6cd":{"prefix":["react import component proptypes","imrcp"],"body":["import React, { Component } from 'react'","import PropTypes from 'prop-types'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"import-react-purecomponent-d87df93":{"prefix":["react import purecomponent","imrpc"],"body":["import React, { PureComponent } from 'react'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"import-react-pure-component-prop-types-3dc3860":{"prefix":["react import purecomponent proptypes","imrpcp"],"body":["import React, { PureComponent } from 'react'","import PropTypes from 'prop-types'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"import-react-memo-9de76ed":{"prefix":["react import memo","imrm"],"body":["import React, { memo } from 'react'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"import-react-memo-prop-types-2f88352":{"prefix":["react import memo proptypes","imrmp"],"body":["import React, { memo } from 'react'","import PropTypes from 'prop-types'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"import-react-usestate-06da5cc":{"prefix":["react import usestate","imrs"],"body":["import React, { useState } from 'react'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"import-react-usestate-useeffect-b90d8c4":{"prefix":["react import usestate useeffect","imrse"],"body":["import React, { useState, useEffect } from 'react'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-class-component-b0afe86":{"prefix":["react component class","rcc"],"body":["import React, { Component } from 'react'","","export default class ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} extends Component {","\trender() {","\t\treturn (","\t\t\t<div>","\t\t\t\t$0","\t\t\t</div>","\t\t)","\t}","}",""],"description":"Creates a React component class with ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-class-export-component-ccb5fec":{"prefix":["react component class export","rce"],"body":["import React, { Component } from 'react'","","export class ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} extends Component {","\trender() {","\t\treturn (","\t\t\t<div>","\t\t\t\t$0","\t\t\t</div>","\t\t)","\t}","}","","export default ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}",""],"description":"Creates a React component class with ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-functional-export-component-a142cff":{"prefix":["react component functional export","rfce"],"body":["import React from 'react'","","function ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}() {","\treturn (","\t\t<div>","\t\t\t$0","\t\t</div>","\t)","}","","export default ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}",""],"description":"Creates a React Functional Component with ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-functional-component-aecd9ff":{"prefix":["react component functional","rfc"],"body":["import React from 'react'","","export default function ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}() {","\treturn (","\t\t<div>","\t\t\t$0","\t\t</div>","\t)","}",""],"description":"Creates a React Functional Component with ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-functional-component-with-proptypes-44b6d6c":{"prefix":["react component functional proptypes","rfcp"],"body":["import React from 'react'","import PropTypes from 'prop-types'","","function ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}(props) {","\treturn (","\t\t<div>","\t\t\t$0","\t\t</div>","\t)","}","","${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}.propTypes = {","","}","","export default ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}","",""],"description":"Creates a React Functional Component with ES7 module system with PropTypes","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-arrow-function-export-component-b5b41c9":{"prefix":["react component arrow function export","rafce"],"body":["import React from 'react'","","const ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} = () => {","\treturn (","\t\t<div>","\t\t\t$0","\t\t</div>","\t)","}","","export default ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}",""],"description":"Creates a React Arrow Function Component with ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-arrow-function-component-7d2b483":{"prefix":["react component arrow function","rafc"],"body":["import React from 'react'","","export const ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} = () => {","\treturn (","\t\t<div>","\t\t\t$0","\t\t</div>","\t)","}",""],"description":"Creates a React Arrow Function Component with ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-arrow-function-component-proptypes-128e7d7":{"prefix":["react component arrow function proptypes","rafcp"],"body":["import React from 'react'","import PropTypes from 'prop-types'","","const ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} = props => {","\treturn (","\t\t<div>","\t\t\t$0","\t\t</div>","\t)","}","","${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}.propTypes = {","","}","","export default ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}",""],"description":"Creates a React Arrow Function Component with ES7 module system with PropTypes","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-class-export-component-proptypes-d2e00ee":{"prefix":["react component class export proptypes","rcep"],"body":["import React, { Component } from 'react'","import PropTypes from 'prop-types'","","export class ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} extends Component {","\tstatic propTypes = {","","\t}","","\trender() {","\t\treturn (","\t\t\t<div>","\t\t\t\t$0","\t\t\t</div>","\t\t)","\t}","}","","export default ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}",""],"description":"Creates a React component class with ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-class-pure-component-874d5bb":{"prefix":["react component class pure","rpc"],"body":["import React, { PureComponent } from 'react'","","export default class ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} extends PureComponent {","\trender() {","\t\treturn (","\t\t\t<div>","\t\t\t\t$0","\t\t\t</div>","\t\t)","\t}","}",""],"description":"Creates a React pure component class with ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-class-export-pure-component-d3583ee":{"prefix":["react component class export pure","rpce"],"body":["import React, { PureComponent } from 'react'","","export class ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} extends PureComponent {","\trender() {","\t\treturn (","\t\t\t<div>","\t\t\t\t$0","\t\t\t</div>","\t\t)","\t}","}","","export default ${1:$TM_FILENAME_BASE}",""],"description":"Creates a React pure component class with ES7 module system export","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-class-pure-component-proptypes-ac4c6d1":{"prefix":["react component class pure with proptypes","rpcp"],"body":["import React, { PureComponent } from 'react'","import PropTypes from 'prop-types'","","export default class ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} extends PureComponent {","\tstatic propTypes = {","","\t}","","\trender() {","\t\treturn (","\t\t\t<div>","\t\t\t\t$0","\t\t\t</div>","\t\t)","\t}","}",""],"description":"Creates a React component class with ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-function-memo-component-75a17a7":{"prefix":["react component function memo","rmc"],"body":["import React, { memo } from 'react'","","export default memo(function ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}() {","\treturn (","\t\t<div>","\t\t\t$0","\t\t</div>","\t)","})",""],"description":"Creates a React Memo Function Component with ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-function-memo-component-proptypes-4112073":{"prefix":["react component function memo proptypes","rmcp"],"body":["import React, { memo } from 'react'","import PropTypes from 'prop-types'","","const ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} = memo(function ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}(props) {","\treturn (","\t\t<div>","\t\t\t$0","\t\t</div>","\t)","})","","${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}.propTypes = {","","}","","export default ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}",""],"description":"Creates a React Memo Function Component with ES7 module system with PropTypes","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-class-component-proptypes-8f1e3ad":{"prefix":["react component class proptypes","rccp"],"body":["import React, { Component } from 'react'","import PropTypes from 'prop-types'","","export default class ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} extends Component {","\tstatic propTypes = {","\t\t${2:prop}: ${3:PropTypes}","\t}","","\trender() {","\t\treturn (","\t\t\t<div>","\t\t\t\t$0","\t\t\t</div>","\t\t)","\t}","}",""],"description":"Creates a React component class with PropTypes and ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-class-component-redux-4690a63":{"prefix":["react component class redux","rcredux"],"body":["import React, { Component } from 'react'","import { connect } from 'react-redux'","","export class ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} extends Component {","\trender() {","\t\treturn (","\t\t\t<div>","\t\t\t\t$0","\t\t\t</div>","\t\t)","\t}","}","","const mapStateToProps = (state) => ({","\t","})","","const mapDispatchToProps = {","\t","}","","export default connect(mapStateToProps, mapDispatchToProps)(${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}})",""],"description":"Creates a React component class with connected redux and ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-class-component-redux-proptypes-a6dba58":{"prefix":["react component class redux proptypes","rcreduxp"],"body":["import React, { Component } from 'react'","import PropTypes from 'prop-types'","import { connect } from 'react-redux'","","export class ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} extends Component {","\tstatic propTypes = {","\t\t${2:prop}: ${3:PropTypes}","\t}","","\trender() {","\t\treturn (","\t\t\t<div>","\t\t\t\t$0","\t\t\t</div>","\t\t)","\t}","}","","const mapStateToProps = (state) => ({","\t","})","","const mapDispatchToProps = {","\t","}","","export default connect(mapStateToProps, mapDispatchToProps)(${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}})",""],"description":"Creates a React component class with PropTypes with connected redux and ES7 module system","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-class-constructor-795be36":{"prefix":["react class constructor","rconst"],"body":["constructor(props) {","\tsuper(props)","","\tthis.state = {","\t\t $0","\t}","}",""],"description":"Adds a default constructor for it('', () => {})the class that contains props as arguments","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-empty-state-b2a85da":{"prefix":["react empty state","est"],"body":["state = {","\t$1","}",""],"description":"Creates empty state object. To be used in a constructor.","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-componentwillmount-c500daf":{"prefix":["react componentwillmount","cwm"],"body":["componentWillMount() {","\t$0","}",""],"description":"DEPRECATED!!!. Invoked once, both on the client and server, immediately before the initial rendering occurs","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-componentdidmount-3ef132f":{"prefix":["react componentdidmount","cdm"],"body":["componentDidMount() {","\t$0","}",""],"description":"Invoked once, only on the client (not on the server), immediately after the initial rendering occurs.","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-componentwillreceiveprops-70d30a4":{"prefix":["react componentwillreceiveprops","cwr"],"body":["componentWillReceiveProps(nextProps) {","\t$0","}",""],"description":"DEPRECATED!!!. Invoked when a component is receiving new props. This method is not called for the initial render.","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-shouldcomponentupdate-7101499":{"prefix":["react shouldcomponentupdate","scu"],"body":["shouldComponentUpdate(nextProps, nextState) {","\t$0","}",""],"description":"Invoked before rendering when new props or state are being received. ","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-componentwillupdate-5b0d9a1":{"prefix":["react componentwillupdate","cwup"],"body":["componentWillUpdate(nextProps, nextState) {","\t$0","}",""],"description":"DEPRECATED!!!. Invoked immediately before rendering when new props or state are being received.","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-componentdidupdate-2b1701a":{"prefix":["react componentdidupdate","cdup"],"body":["componentDidUpdate(prevProps, prevState) {","\t$0","}",""],"description":"Invoked immediately after the component's updates are flushed to the DOM.","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-componentwillunmount-c453065":{"prefix":["react componentwillunmount","cwun"],"body":["componentWillUnmount() {","\t$0","}",""],"description":"Invoked immediately before a component is unmounted from the DOM.","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-getderivedstatefromprops-5e411d3":{"prefix":["react getderivedstatefromprops","gdsfp"],"body":["static getDerivedStateFromProps(props, state) {","\t${1}","}"],"description":"Invoked right before calling the render method, both on the initial mount and on subsequent updates.","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-getsnapshotbeforeupdate-c796a6b":{"prefix":["react getsnapshotbeforeupdate","gsbu"],"body":["getSnapshotBeforeUpdate = (prevProps, prevState) => {","\t$0","}",""],"description":"Called right before mutations are made (e.g. before the DOM is updated)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-component-render-61bbb08":{"prefix":["react component render","ren"],"body":["render() {","\treturn (","\t\t<div>","\t\t\t$0","\t\t</div>","\t)","}"],"description":"Basic render.","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-createcontext-2496dfa":{"prefix":["react createcontext","rcontext"],"body":["const ${1:contextName} = React.createContext()",""],"description":"Create React context","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-createref-a8876f6":{"prefix":["react createref","cref"],"body":["this.${1:refName}Ref = React.createRef()",""],"description":"Create ref statement used inside constructor","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-forwardref-ed2489b":{"prefix":["react forwardref","fref"],"body":["const ref = React.createRef()",""],"description":"Forward ref statement used inside component","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-component-set-state-object-26f69b8":{"prefix":["react componentsetstateobject","sst"],"body":["this.setState({$0})"],"description":"Performs a shallow merge of nextState into current state","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-component-set-state-func-71c68ed":{"prefix":["react component setstate func","ssf"],"body":["this.setState((state, props) => { return { $0 }})",""],"description":"Performs a shallow merge of nextState into current state","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-component-props-7c28f7e":{"prefix":["react component props","props"],"body":["this.props.$0"],"description":"Access component's props","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-component-state-364f0c1":{"prefix":["react component state","state"],"body":["this.state.$0"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-bind-this-059f17f":{"prefix":["react bind this","bnd"],"body":["this.${1:methodName} = this.${1:methodName}.bind(this)$0"],"description":"Binds this to a method","scope":"javascript,javascriptreact,typescript,typescriptreact"},"react-hoc-167b611":{"prefix":["react hoc","hoc"],"body":["import React from 'react'","import PropTypes from 'prop-types'","","export default (WrappedComponent) => {","\tconst hocComponent = ({ ...props }) => <WrappedComponent {...props} />","","\thocComponent.propTypes = {","\t}","","\treturn hocComponent","}",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-usestate-ed43445":{"prefix":["react usestate","usestate"],"body":["const [${1:state}, set${1/(.*)/${1:/capitalize}/}] = useState(${2:initialState})"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-useeffect-4594276":{"prefix":["react useeffect","useeffect"],"body":["useEffect(() => {","\t${1:effect}","\treturn () => {","\t\t${2:cleanup}","\t};","}, [${3:input}])"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-usecontext-dcb61d6":{"prefix":["react usecontext","usecontext"],"body":["const ${1:context} = useContext(${2:contextValue})"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-usecallback-37febd9":{"prefix":["react usecallback","usecallback"],"body":["useCallback(","\t() => {","\t\t${1:callback}","\t},","\t[${2:input}],",")"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-usememo-511ddbc":{"prefix":["react usememo","usememo"],"body":["useMemo(() => ${1:function}, ${2:input})"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-useref-b05731a":{"prefix":["react useref","useref"],"body":["const ${1:ref} = useRef(${2:initialValue})"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-useimperativehandle-5d6cfdb":{"prefix":["react useimperativehandle","useimperativehandle"],"body":["useImperativeHandle(","\t${1:ref},","\t() => {","\t\t${2:handler}","\t},","\t[${3:input}],",")"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-usedebugvalue-c2a38e6":{"prefix":["react usedebugvalue","usedebugvalue"],"body":["useDebugValue(${1:value})"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"react-uselayouteffect-f12daae":{"prefix":["react uselayouteffect","uselayouteffect"],"body":["useLayoutEffect(() => {","\t${1:effect}","\treturn () => {","\t\t${2:cleanup}","\t};","}, [${3:input}])"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"jest-afterall-db434c7":{"body":["afterAll(() => {\n\t$0\n});"],"description":"afterAll function is called once after all specs","prefix":["jest afterall","aa"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-aftereach-9ccb9c8":{"body":["afterEach(() => {\n\t$0\n});"],"description":"afterEach function is called once after each spec","prefix":["jest aftereach","ae"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-beforeall-e712b69":{"body":["beforeAll(() => {\n\t$0\n});"],"description":"beforeAll function is called once before all specs","prefix":["jest beforeall","ba"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-beforeeach-8b7f14e":{"body":["beforeEach(() => {\n\t$0\n});"],"description":"beforeEach function is called once before each spec","prefix":["jest beforeeach","be"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-describe-e87b131":{"body":["describe('${1:Name of the group}', () => {\n\t$0\n});"],"description":"creates a describe block","prefix":["jest describe","desc"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-describe-each-18b6759":{"body":["describe.each([${1:[1, 2], [2, 4]}])(","\t'${2:double(%d)}',","\t(${3:input, expected}) => {","\t\ttest(`returns \\${expected}`, () => {","\t\t\t${4:expect(double(input)).toBe(expected);}","\t\t});","\t}",");"],"description":"creates a describe block with different test data sets","prefix":["jest describe each","desce"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-describe-only-a7a8150":{"body":["describe.only('${1:Name of the group}', () => {\n\t$0\n});"],"description":"creates a describe block that runs only","prefix":["jest describe only","desco"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-describe-skip-eb1eeb8":{"body":["describe.skip('${1:Name of the group}', () => {\n\t$0\n});"],"description":"creates a describe block that will be skipped","prefix":["jest describe skip","descs"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-expect-9f0689b":{"body":["expect($0)"],"description":"expect actual value","prefix":["jest expect","exp"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-expect-assertions-fb81a3f":{"body":["expect.assertions($0);"],"description":"expects the test to make the indicated number of assertions (useful for async)","prefix":["jest expect assertions","expas"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-expect-hasassertions-36dfb6e":{"body":["expect.hasAssertions();$0"],"description":"expects the test to make at least one assertion (useful for async)","prefix":["jest expect hasassertions","expha"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-expect-rejects-873ce88":{"body":["expect($1).rejects$0"],"description":"expect promise rejects to","prefix":["jest expect rejects","exprj"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-expect-resolves-397ab9c":{"body":["expect($1).resolves$0"],"description":"expect promise resolves to","prefix":["jest expect resolves","expr"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-it-a44888c":{"body":["it('${1:should }', () => {\n\t$0\n});"],"description":"creates an it block","prefix":["jest it","it"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-it-each-2397fdd":{"body":["it.each([${1:[1, 2], [2, 4]}])(","\t'${2:double(%d)}',","\t(${3:input, expected}) => {","\t\t${0:expect(double(input)).toBe(expected);}","\t}",");"],"description":"creates an it block with different test data sets","prefix":["jest it each","ite"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-it-only-8e620fb":{"body":["it.only('${1:should }', () => {\n\t$0\n});"],"description":"creates an it block that runs only","prefix":["jest it only","ito"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-it-skip-8508e71":{"body":["it.skip('${1:should }', () => {\n\t$0\n});"],"description":"creates an it block that will be skipped","prefix":["jest it skip","its"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-it-todo-d45b3f0":{"body":["it.todo('${1:should }');"],"description":"creates a test placeholder","prefix":["jest it todo","itt"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-it-async-6f3e7de":{"body":["it('${1:should }', async () => {\n\t$0\n});"],"description":"creates an it block with async callback function","prefix":["jest it async","ita"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-jest-fn-edea3e7":{"body":["jest.fn($0)"],"description":"creates jest.fn()","prefix":["jest fn","jfn"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-template-cut-976133c":{"body":["describe('${1:Name of the group}', () => {\n","\tlet ${2:cut};\n","\tbeforeEach(() => {\n\t\t$2 = $3;\n\t});\n","\ttest('${1:should }', () => {","\t\texpect($2).toBe($0);","\t});\n","});"],"description":"creates a template to test a class under test","prefix":["jest template cut","cut"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-test-3bfbc6b":{"body":["test('${1:should }', () => {\n\t$0\n});"],"description":"creates a test block","prefix":["jest test","test"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-test-each-689bad9":{"body":["test.each([${1:[1, 2], [2, 4]}])(","\t'${2:double(%d)}',","\t(${3:input, expected}) => {","\t\t${0:expect(double(input)).toBe(expected);}","\t}",");"],"description":"creates an test block with different test data sets","prefix":["jest test each","teste"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-test-only-9552f2f":{"body":["test.only('${1:should }', () => {\n\t$0\n});"],"description":"creates a test block  that runs only","prefix":["jest test only","testo"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-test-skip-34fb7b0":{"body":["test.skip('${1:should }', () => {\n\t$0\n});"],"description":"creates a test block that will be skipped","prefix":["jest test skip","tests"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-test-todo-baa5470":{"body":["test.todo('${1:should }');"],"description":"creates a test placeholder","prefix":["jest test todo","testt"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-test-async-58915c6":{"body":["test('${1:should }', async () => {\n\t$0\n});"],"description":"creates an test block with async callback function","prefix":["jest test async","testa"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobe-4441a1c":{"body":["expect($1).toBe($0);"],"description":"expects the first argument to be equal with the second one","prefix":["jest expect tobe","tb"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobecloseto-01ddfed":{"body":["expect($1).toBeCloseTo(${2:number}, ${3:delta});$0"],"description":"expects the first argument to be close to the second one base on the delta","prefix":["jest expect tobecloseto","tbct"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobedefined-3d54284":{"body":["expect($1).toBeDefined();$0"],"description":"expects the argument is defined","prefix":["jest expect tobedefined","tbd"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobefalsy-4999fd9":{"body":["expect($1).toBeFalsy();$0"],"description":"expects the argument is falsy","prefix":["jest expect tobefalsy","tbf"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobegreaterthan-826ea62":{"body":["expect($1).toBeGreaterThan($0);"],"description":"expects the argument is greater than or equal","prefix":["jest expect tobegreaterthan","tbgt"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobegreaterthanorequal-c145bf6":{"body":["expect($1).toBeGreaterThanOrEqual($0);"],"description":"expects the argument is greater than","prefix":["jest expect tobegreaterthanorequal","tbgte"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobeinstanceof-f99c337":{"body":["expect($1).toBeInstanceOf($0);"],"description":"expects the argument is less than","prefix":["jest expect tobeinstanceof","tbi"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobelessthan-ccc108e":{"body":["expect($1).toBeLessThan($0);"],"description":"expects the argument is less than","prefix":["jest expect tobelessthan","tblt"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobelessthanorequal-0a3afe5":{"body":["expect($1).toBeLessThanOrEqual($0);"],"description":"expects the argument is less than or equal","prefix":["jest expect tobelessthanorequal","tblte"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobenull-412c708":{"body":["expect($1).toBeNull();$0"],"description":"expects the argument is null","prefix":["jest expect tobenull","tbn"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobetruthy-22a5299":{"body":["expect($1).toBeTruthy();$0"],"description":"expects the argument is truthy","prefix":["jest expect tobetruthy","tbt"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tobeundefined-8e43791":{"body":["expect($1).toBeUndefined();$0"],"description":"expects the argument is undefined","prefix":["jest expect tobeundefined","tbu"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tocontain-caee824":{"body":["expect(${1:list}).toContain($0);"],"description":"expects the list contains the item (===)","prefix":["jest expect tocontain","tc"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tocontainequal-bba0e34":{"body":["expect(${1:list}).toContainEqual($0);"],"description":"expects the list contains the item (equals)","prefix":["jest expect tocontainequal","tce"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-toequal-2447cc7":{"body":["expect($1).toEqual($0);"],"description":"expects the first argument to be equal with the second one","prefix":["jest expect toequal","te"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tohavebeencalled-f656ee3":{"body":["expect($1).toHaveBeenCalled();$0"],"description":"returns true if the spy was called","prefix":["jest expect tohavebeencalled","thbc"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tohavebeencalledtimes-6b04897":{"body":["expect($1).toHaveBeenCalledTimes($0);"],"description":"returns true if the spy has been called given times","prefix":["jest expect tohavebeencalledtimes","thbct"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tohavebeencalledwith-bee1a43":{"body":["expect($1).toHaveBeenCalledWith($0);"],"description":"returns true if the spy has been called with","prefix":["jest expect tohavebeencalledwith","thbcw"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tohavebeenlastcalledwith-0374cb5":{"body":["expect($1).toHaveBeenLastCalledWith($0);"],"description":"returns true if the spy has been last called with","prefix":["jest expect tohavebeenlastcalledwith","thblcw"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tohavelength-12f09e2":{"body":["expect($1).toHaveLength($0);"],"description":"expects the object to have length","prefix":["jest expect tohavelength","thl"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tohaveproperty-69f5f9d":{"body":["expect($1).toHaveProperty(${2:keyPath}, ${3:value});$0"],"description":"returns true if the argument matches the second object","prefix":["jest expect tohaveproperty","thp"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tomatch-0d6a7de":{"body":["expect($1).toMatch($0);"],"description":"returns true if the argument matches the second value","prefix":["jest expect tomatch","tm"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tomatchinlinesnapshot-2fc3a70":{"body":["expect($1).toMatchInlineSnapshot($0);"],"description":"returns true if the argument matches the most recent inline snapshot","prefix":["jest expect tomatchinlinesnapshot","tmis"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tomatchobject-fa0237b":{"body":["expect($1).toMatchObject($0);"],"description":"returns true if the argument matches the second object","prefix":["jest expect tomatchobject","tmo"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tomatchsnapshot-dc77106":{"body":["expect($1).toMatchSnapshot($0);"],"description":"returns true if the argument matches the most recent snapshot","prefix":["jest expect tomatchsnapshot","tms"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tostrictequal-fe1eb76":{"body":["expect($1).toStrictEqual($0);"],"description":"expects the first argument to be strictly equal with the second one","prefix":["jest expect tostrictequal","tse"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tothrow-fb3584c":{"body":["expect(() => {\n\t$0\n}).toThrow($1);"],"description":"expects that the method will throw an error","prefix":["jest expect tothrow","tt"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tothrowerror-4f97a06":{"body":["expect(() => {\n\t$0\n}).toThrowError($1);"],"description":"expects that the method will throw an error","prefix":["jest expect tothrowerror","tte"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tothrowerrormatchinginlinesnapshot-10fbe93":{"body":["expect(() => {\n\t$0\n}).toThrowErrorMatchingInlineSnapshot();"],"description":"expects that the method will throw an error matching the inline snapshot","prefix":["jest expect tothrowerrormatchinginlinesnapshot","ttemis"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"jest-tothrowerrormatchingsnapshot-dc9e88c":{"body":["expect(() => {\n\t$0\n}).toThrowErrorMatchingSnapshot();"],"description":"expects that the method will throw an error mathing the snapshpot","prefix":["jest expect tothrowerrormatchingsnapshot","ttems"],"scope":"javascript,javascriptreact,typescript,typescriptreact"},"redux-thunk-import-f5c1ffa":{"prefix":["redux-thunk import"],"body":["import thunk from 'redux-thunk'"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"Import thunk from redux-thunk"},"redux-thunk-store-52c5a6b":{"prefix":["redux-thunk createstore"],"body":["import { createStore, applyMiddleware } from 'redux';","import thunk from 'redux-thunk';","import ${1:rootReducer} from '${1:./reducers/index}';","","const store = createStore(","  ${1:rootReducer},","  applyMiddleware(thunk)",");"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"Create store with thunk template"},"redux-import-connect-fcd7c8a":{"prefix":["redux import connect"],"body":["import { connect } from 'react-redux'",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"Import connect from Redux"},"redux-map-to-props-ab0461d":{"prefix":["redux map props"],"body":["const mapStateToProps = (state) => ({","\t${1}","})","","const mapDispatchToProps = {","\t","}",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"Creates mapStateToProps function."},"redux-const-d420a77":{"prefix":["redux const","rxconst"],"body":["export const ${1:constantName} = '${1:constantName}'"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":" "},"redux-reducer-1beaa45":{"prefix":["redux reducer","rxreducer"],"body":["const initialState = {","","}","","export default (state = initialState, { type, payload }) => {","\tswitch (type) {","","\tcase ${1:typeName}:","\t\treturn { ...state, ...payload }","","\tdefault:","\t\treturn state","\t}","}",""],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"Redux reducer template"},"redux-action-abd8342":{"prefix":["redux action","rxaction"],"body":["const ${1:actionCreatorName} = ${2:payload} => {","  return {","    type: '${3:ACTION_TYPE}',","    payload: ${2:payload},","  };","};"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"Redux action template"},"redux-import-hooks-91da0a6":{"prefix":["redux import hooks","irrh"],"body":["import { useSelector, useDispatch } from 'react-redux';"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"Import Redux hooks (useSelector, useDispatch)"},"redux-useselector-dc02cf1":{"prefix":["redux useselector","uss"],"body":["const $1 = useSelector(state => state.$1);"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"Redux useSelector() hook"},"redux-usedispatch-hook-ed5c764":{"prefix":["redux usedispatch","rxusdh"],"body":["const dispatch = useDispatch();"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"Redux useDispatch() hook"},"redux-dispatch-hook-f21e74f":{"prefix":["redux dispatch","rxd"],"body":["const $1 = $2 => dispatch($3);"],"scope":"javascript,javascriptreact,typescript,typescriptreact","description":"Redux dispatch hook"},"var-assignment-411b622":{"prefix":["base var"],"body":["var ${1:name} = ${2:value};"],"description":"var assignment","scope":"javascript,javascriptreact,typescript,typescriptreact"},"let-assignment-5ec2f75":{"prefix":["base let"],"body":["let ${1:name} = ${2:value};"],"description":"let assignment","scope":"javascript,javascriptreact,typescript,typescriptreact"},"destructuring-let-assignment-cb4b3f2":{"prefix":["base let destruct object"],"body":["let {${1:name}} = ${2:value};"],"description":"Object destructing","scope":"javascript,javascriptreact,typescript,typescriptreact"},"destructuring-let-array-d693a16":{"prefix":["base let destruct array"],"body":["let [${1:name}] = ${2:value};"],"description":"Array destructing","scope":"javascript,javascriptreact,typescript,typescriptreact"},"const-assignment-3882230":{"prefix":["base const"],"body":["const ${1:name} = ${2:value};"],"description":"const assignment","scope":"javascript,javascriptreact,typescript,typescriptreact"},"destructuring-const-assignment-3bedb18":{"prefix":["base const destruct object"],"body":["const {${1:name}} = ${2:value};"],"description":"Object destructing","scope":"javascript,javascriptreact,typescript,typescriptreact"},"destructingarray-ff5c0be":{"prefix":["base const destruct array"],"body":["const [${2:propertyName}] = ${1:arrayToDestruct};"],"description":"Array destructing","scope":"javascript,javascriptreact,typescript,typescriptreact"},"if-statement-4f7664a":{"prefix":["base if"],"body":["if (${1:condition}) {\n\t${0}\n}"],"description":"if statement","scope":"javascript,javascriptreact,typescript,typescriptreact"},"else-statement-8019679":{"prefix":["base else"],"body":["else {\n\t${0}\n}"],"description":"else statement","scope":"javascript,javascriptreact,typescript,typescriptreact"},"if-else-statement-0da01e0":{"prefix":["base if else"],"body":["if (${1:condition}) {\n\t${0}\n} else {\n\t\n}"],"description":"if/else statement","scope":"javascript,javascriptreact,typescript,typescriptreact"},"else-if-statement-3bf0944":{"prefix":["base else if"],"body":["else if (${1:condition}) {\n\t${0}\n}"],"description":"else if statement","scope":"javascript,javascriptreact,typescript,typescriptreact"},"ternary-operator-d577c8d":{"prefix":["base ternary operator"],"body":["${1:condition} ? ${2:expression} : ${3:expression};"],"description":"ternary operator","scope":"javascript,javascriptreact,typescript,typescriptreact"},"for-loop-45777a2":{"prefix":["base for"],"body":["for (let ${1:i} = 0, ${2:len} = ${3:iterable}.length; ${1:i} < ${2:len}; ${1:i}++) {\n\t${0}\n}"],"description":"for loop","scope":"javascript,javascriptreact,typescript,typescriptreact"},"reverse-for-loop-5a7dc59":{"prefix":["base for reverse"],"body":["for (let ${1:i} = ${2:iterable}.length - 1; ${1:i} >= 0; ${1:i}--) {\n\t${0}\n}"],"description":"reverse for loop","scope":"javascript,javascriptreact,typescript,typescriptreact"},"for-in-loop-f4b42c5":{"prefix":["base for in"],"body":["for (let ${1:key} in ${2:array}) {\n\tif (${2:array}.hasOwnProperty(${1:key})) {\n\t\t${0}\n\t}\n}"],"description":"for in loop","scope":"javascript,javascriptreact,typescript,typescriptreact"},"for-of-loop-es6--7d51361":{"prefix":["base for of"],"body":["for (let ${1:key} of ${2:array}) {\n\t${0}\n}"],"description":"for of loop (ES6)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"while-loop-a72bb64":{"prefix":["base while"],"body":["while (${1:condition}) {\n\t${0}\n}"],"description":"while loop","scope":"javascript,javascriptreact,typescript,typescriptreact"},"try-catch-2f4efee":{"prefix":["base try catch"],"body":["try {\n\t${0}\n} catch (${1:err}) {\n\t\n}"],"description":"try/catch","scope":"javascript,javascriptreact,typescript,typescriptreact"},"try-finally-9ba26a6":{"prefix":["base try finally"],"body":["try {\n\t${0}\n} finally {\n\t\n}"],"description":"try/finally","scope":"javascript,javascriptreact,typescript,typescriptreact"},"try-catch-finally-f6535e6":{"prefix":["base try catch finally"],"body":["try {\n\t${0}\n} catch (${1:err}) {\n\t\n} finally {\n\t\n}"],"description":"try/catch/finally","scope":"javascript,javascriptreact,typescript,typescriptreact"},"switch-case-5f707c3":{"prefix":["base switch case"],"body":["switch (${1:expr}) {\n\tcase ${2:value}:\n\t\treturn $0;\n\tdefault:\n\t\treturn;\n}"],"description":"switch case","scope":"javascript,javascriptreact,typescript,typescriptreact"},"anonymous-function-8b88a03":{"prefix":["base function anonymous"],"body":["function (${1:arguments}) {\n\t${0}\n}"],"description":"anonymous function","scope":"javascript,javascriptreact,typescript,typescriptreact"},"named-function-d25eaf4":{"prefix":["base function named"],"body":["function ${1:name}(${2:arguments}) {\n\t${0}\n}"],"description":"named function","scope":"javascript,javascriptreact,typescript,typescriptreact"},"immediately-invoked-function-expression-iife--0c9a12f":{"prefix":["base function immediate"],"body":["((${1:arguments}) => {\n\t${0}\n})(${2});"],"description":"immediately-invoked function expression (IIFE)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"function-apply-0e4ee66":{"prefix":["base function apply"],"body":["${1:fn}.apply(${2:this}, ${3:arguments})"],"description":"function apply","scope":"javascript,javascriptreact,typescript,typescriptreact"},"function-call-4c8e482":{"prefix":["base function call"],"body":["${1:fn}.call(${2:this}, ${3:arguments})"],"description":"function call","scope":"javascript,javascriptreact,typescript,typescriptreact"},"function-bind-07ab16e":{"prefix":["base function bind"],"body":["${1:fn}.bind(${2:this}, ${3:arguments})"],"description":"function bind","scope":"javascript,javascriptreact,typescript,typescriptreact"},"arrow-function-es6--82bc5b9":{"prefix":["base function arrow"],"body":["(${1:arguments}) => ${2:statement}"],"description":"arrow function (ES6)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"arrow-function-with-body-es6--1419255":{"prefix":["base function arrow body"],"body":["(${1:arguments}) => {\n\t${0}\n}"],"description":"arrow function with body (ES6)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"generator-function-es6--0663b6b":{"prefix":["base function generator"],"body":["function* (${1:arguments}) {\n\t${0}\n}"],"description":"generator function (ES6)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"named-generator-function-es6--1410553":{"prefix":["base function generator named"],"body":["function* ${1:name}(${2:arguments}) {\n\t${0}\n}"],"description":"named generator function (ES6)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"sequence-of-0-n-4e0409d":{"prefix":["base sequence of"],"body":["[...Array(${1:length}).keys()]${0}"],"description":"sequence of 0..n","scope":"javascript,javascriptreact,typescript,typescriptreact"},"foreach-loop-481be63":{"prefix":["base foreach"],"body":["${1}.forEach((${2:item}) => {\n\t${0}\n});"],"description":"forEach loop","scope":"javascript,javascriptreact,typescript,typescriptreact"},"map-a1ee187":{"prefix":["base map"],"body":["${1}.map((${2:item}) => {\n\t${0}\n});"],"description":"map","scope":"javascript,javascriptreact,typescript,typescriptreact"},"reduce-5c10859":{"prefix":["base reduce"],"body":["${1}.reduce((${2:previous}, ${3:current}) => {\n\t${0}\n}${4:, initial});"],"description":"reduce","scope":"javascript,javascriptreact,typescript,typescriptreact"},"filter-4496b0f":{"prefix":["base filter"],"body":["${1}.filter(${2:item} => {\n\t${0}\n});"],"description":"filter","scope":"javascript,javascriptreact,typescript,typescriptreact"},"find-8795af4":{"prefix":["base find"],"body":["${1}.find(${2:item} => {\n\t${0}\n});"],"description":"find","scope":"javascript,javascriptreact,typescript,typescriptreact"},"class-es6--231af3c":{"prefix":["base class"],"body":["class ${1:name} {\n\tconstructor(${2:arguments}) {\n\t\t${0}\n\t}\n}"],"description":"class (ES6)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"child-class-es6--49cfcee":{"prefix":["base child class"],"body":["class ${1:name} extends ${2:base} {\n\tconstructor(${3:arguments}) {\n\t\tsuper(${3:arguments});\n\t\t${0}\n\t}\n}"],"description":"child class (ES6)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"class-constructor-es6--e84a3e1":{"prefix":["base class constructor"],"body":["constructor(${1:arguments}) {\n\tsuper(${1:arguments});${0}\n}"],"description":"class constructor (ES6)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"method-es6-syntax--2967249":{"prefix":["base method"],"body":["${1:method}(${2:arguments}) {\n\t${0}\n}"],"description":"method (ES6 syntax)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"getter-es6-syntax--90c9824":{"prefix":["base getter"],"body":["get ${1:property}() {\n\t${0}\n}"],"description":"getter (ES6 syntax)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"setter-es6-syntax--447e460":{"prefix":["base setter"],"body":["set ${1:property}(${2:value}) {\n\t${0}\n}"],"description":"setter (ES6 syntax)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"getter-and-setter-es6-syntax--c12be7d":{"prefix":["base getter setter"],"body":["get ${1:property}() {\n\t${0}\n}\nset ${1:property}(${2:value}) {\n\t\n}"],"description":"getter and setter (ES6 syntax)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"prototype-method-dcec465":{"prefix":["base prototype method"],"body":["${1:Class}.prototype.${2:method} = function(${3:arguments}) {\n\t${0}\n};"],"description":"prototype method","scope":"javascript,javascriptreact,typescript,typescriptreact"},"object-assign-10c91f2":{"prefix":["base object assign"],"body":["Object.assign(${1:dest}, ${2:source})"],"description":"Object.assign","scope":"javascript,javascriptreact,typescript,typescriptreact"},"object-assign-copy-shallow-clone--72fede8":{"prefix":["base object assign copy"],"body":["Object.assign({}, ${1:original}, ${2:source})"],"description":"Object.assign copy (shallow clone)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"return-0c23964":{"prefix":["base return"],"body":["return ${0};"],"description":"return","scope":"javascript,javascriptreact,typescript,typescriptreact"},"return-promise-es6--fd35485":{"prefix":["base return promise"],"body":["return new Promise((resolve, reject) => {\n\t${0}\n});"],"description":"return Promise (ES6)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"return-complex-value-such-as-jsx-components--782bfcc":{"prefix":["base return complex value"],"body":["return (\n\t${0}\n);"],"description":"return complex value (such as JSX components)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"typeof-19ce7c6":{"prefix":["base typeof"],"body":["typeof ${1:source} === '${2:undefined}'"],"description":"typeof","scope":"javascript,javascriptreact,typescript,typescriptreact"},"instanceof-8bb3070":{"prefix":["base instanceof"],"body":["${1:source} instanceof ${2:Object}"],"description":"instanceof","scope":"javascript,javascriptreact,typescript,typescriptreact"},"promise-es6--f34bc97":{"prefix":["base promise"],"body":["new Promise((resolve, reject) => {\n\t${0}\n})"],"description":"Promise (ES6)","scope":"javascript,javascriptreact,typescript,typescriptreact"},"promise-then-e996760":{"prefix":["base promise then"],"body":["${1:promise}.then((${2:value}) => {\n\t${0}\n})"],"description":"Promise.then","scope":"javascript,javascriptreact,typescript,typescriptreact"},"promise-catch-f342220":{"prefix":["base promise catch"],"body":["${1:promise}.catch((${2:err}) => {\n\t${0}\n})"],"description":"Promise.catch","scope":"javascript,javascriptreact,typescript,typescriptreact"},"exportnamedvariable-78bb381":{"prefix":["base export named variable"],"body":["export const ${1:exportVariable} = ${2:localVariable};\n"],"description":"Export named variable in ES6 syntax","scope":"javascript,javascriptreact,typescript,typescriptreact"},"exportnamedfunction-181a9c8":{"prefix":["base export named function"],"body":["export const ${1:functionName} = (${2:params}) => {\n\t$0\n};\n"],"description":"Export named function in ES6 syntax","scope":"javascript,javascriptreact,typescript,typescriptreact"},"exportdefaultfunction-30a2855":{"prefix":["base export default function"],"body":["export default function ${1:${TM_FILENAME_BASE}}(${2:params}) {\n\t$0\n};\n"],"description":"Export default function in ES6 syntax","scope":"javascript,javascriptreact,typescript,typescriptreact"},"exportclass-b3bf75f":{"prefix":["base export class"],"body":["export default class ${1:className} {\n\t$0\n};\n"],"description":"Export default class in ES6 syntax","scope":"javascript,javascriptreact,typescript,typescriptreact"},"exportclassextends-97fc7f4":{"prefix":["base export class extends"],"body":["export default class ${1:className} extends ${2:baseclassName} {\n\t$0\n};\n"],"description":"Export default class which extends a base one in ES6 syntax","scope":"javascript,javascriptreact,typescript,typescriptreact"},"import-a1eb24c":{"prefix":["base import"],"body":["import ${2:moduleName} from '${1:module}';$0"],"description":"Imports entire module statement in ES6 syntax","scope":"javascript,javascriptreact,typescript,typescriptreact"},"importnomodulename-ef6ff1d":{"prefix":["base import no module name"],"body":["import '${1:module}';$0"],"description":"Imports entire module in ES6 syntax without module name","scope":"javascript,javascriptreact,typescript,typescriptreact"},"importdestructing-d98cd10":{"prefix":["base import destructing"],"body":["import { $2 } from '${1:module}';$0"],"description":"Imports only a portion of the module in ES6 syntax","scope":"javascript,javascriptreact,typescript,typescriptreact"},"importeverything-254070b":{"prefix":["base import everything"],"body":["import * as ${2:alias} from '${1:module}';$0"],"description":"Imports everything as alias from the module in ES6 syntax","scope":"javascript,javascriptreact,typescript,typescriptreact"},"importas-9e11ffa":{"prefix":["base import as"],"body":["import { ${2:originalName} as ${3:alias} } from '${1:module}';$0"],"description":"Imports a specific portion of the module by assigning a local alias in ES6 syntax","scope":"javascript,javascriptreact,typescript,typescriptreact"},"require-542391c":{"prefix":["base require"],"body":["require('${1:module}');"],"description":"require","scope":"javascript,javascriptreact,typescript,typescriptreact"},"require-local-8efd416":{"prefix":["base require local"],"body":["require('./${1:module}');"],"description":"require local","scope":"javascript,javascriptreact,typescript,typescriptreact"},"require-assignment-b360ddf":{"prefix":["base require assignment"],"body":["const ${1:module} = require('${1:module}');"],"description":"require assignment","scope":"javascript,javascriptreact,typescript,typescriptreact"},"require-assignment-local-1f4f925":{"prefix":["base require assignment local"],"body":["const ${1:module} = require('./${1:module}');"],"description":"require assignment local","scope":"javascript,javascriptreact,typescript,typescriptreact"},"destructuring-require-assignment-3246472":{"prefix":["base require assignment"],"body":["const {${1:module}} = require('${1:module}');"],"description":"destructuring require assignment","scope":"javascript,javascriptreact,typescript,typescriptreact"},"destructuring-require-assignment-local-6e9014c":{"prefix":["base require assignment local destruct"],"body":["const {${1:module}} = require('./${1:module}');"],"description":"destructuring require assignment local","scope":"javascript,javascriptreact,typescript,typescriptreact"},"exports-member-c1002a1":{"prefix":["base exports member"],"body":["exports.${1:member} = ${2:value};"],"description":"exports.member","scope":"javascript,javascriptreact,typescript,typescriptreact"},"module-exports-7a7a786":{"prefix":["base module exports"],"body":["module.exports = ${1:name};"],"description":"module.exports","scope":"javascript,javascriptreact,typescript,typescriptreact"},"module-exports-object-943f52d":{"prefix":["base module exports object"],"body":["module.exports = {\n\t${1:member}\n};"],"description":"module exports object","scope":"javascript,javascriptreact,typescript,typescriptreact"},"event-handler-37f565f":{"prefix":["base event handler"],"body":["${1:emitter}.on('${2:event}', (${3:arguments}) => {\n\t${0}\n});"],"description":"event handler","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consoleassert-a5f4e69":{"prefix":["base console assert"],"body":["console.assert(${1:expression}, ${2:object});"],"description":"If the specified expression is false, the message is written to the console along with a stack trace","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consoleclear-d9e0118":{"prefix":["base console clear"],"body":["console.clear();"],"description":"Clears the console","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consolecount-9c5f7ea":{"prefix":["base console count"],"body":["console.count(${1:label});"],"description":"Writes the the number of times that count() has been invoked at the same line and with the same label","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consoledebug-edf85f8":{"prefix":["base console debug"],"body":["console.debug(${1:object});"],"description":"Displays a message in the console. Also display a blue right arrow icon along with the logged message in Safari","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consoledir-faf0292":{"prefix":["base console dir"],"body":["console.dir(${1:object});"],"description":"Prints a JavaScript representation of the specified object","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consoleerror-1c4c6bc":{"prefix":["base console error"],"body":["console.error(${1:object});"],"description":"Displays a message in the console and also includes a stack trace from where the method was called","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consolegroup-7ad240a":{"prefix":["base console group"],"body":["console.group('${1:label}');"],"description":"Groups and indents all following output by an additional level, until console.groupEnd() is called.","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consolegroupend-fe2f5e4":{"prefix":["base console group end"],"body":["console.groupEnd();"],"description":"Closes out the corresponding console.group().","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consolelog-a7a4472":{"prefix":["base console log"],"body":["console.log(${1:object});"],"description":"Displays a message in the console","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consolelogobject-2197f96":{"prefix":["base console log object"],"body":["console.log('${1:object} :>> ', ${1:object});"],"description":"Displays an object in the console with its name","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consoletrace-33e4543":{"prefix":["base console trace"],"body":["console.trace(${1:object});"],"description":"Prints a stack trace from the point where the method was called","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consolewarn-1ddec9c":{"prefix":["base console warn"],"body":["console.warn(${1:object});"],"description":"Displays a message in the console but also displays a yellow warning icon along with the logged message","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consoleinfo-9aaf424":{"prefix":["base console info"],"body":["console.info(${1:object});"],"description":"Displays a message in the console but also displays a blue information icon along with the logged message","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consoletable-35c244f":{"prefix":["base console table"],"body":["console.table(${1:object});"],"description":"Displays tabular data as a table.","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consoletime-c352d2d":{"prefix":["base console time"],"body":["console.time(${1:object});"],"description":"Sets starting point for execution time measurement","scope":"javascript,javascriptreact,typescript,typescriptreact"},"consoletimeend-edc0765":{"prefix":["base console time end"],"body":["console.timeEnd(${1:object});"],"description":"Sets end point for execution time measurement","scope":"javascript,javascriptreact,typescript,typescriptreact"},"settimeout-1eb369f":{"prefix":["base set timeout"],"body":["setTimeout(() => {\n\t${0}\n}, ${1:delay});"],"description":"setTimeout","scope":"javascript,javascriptreact,typescript,typescriptreact"},"setinterval-25bbd90":{"prefix":["base set interval"],"body":["setInterval(() => {\n\t${0}\n}, ${1:delay});"],"description":"setInterval","scope":"javascript,javascriptreact,typescript,typescriptreact"},"setimmediate-44177fa":{"prefix":["base set immediate"],"body":["setImmediate(() => {\n\t${0}\n});"],"description":"setImmediate","scope":"javascript,javascriptreact,typescript,typescriptreact"},"process-nexttick-9043b4d":{"prefix":["base process next tick"],"body":["process.nextTick(() => {\n\t${0}\n});"],"description":"process nextTick","scope":"javascript,javascriptreact,typescript,typescriptreact"},"insert-use-strict-statement-dbe202c":{"prefix":["base use strict"],"body":["'use strict';"],"description":"insert 'use strict' statement","scope":"javascript,javascriptreact,typescript,typescriptreact"}}
\ No newline at end of file
diff --git a/.watchmanconfig b/.watchmanconfig
deleted file mode 100644
index 9e26dfe..0000000
--- a/.watchmanconfig
+++ /dev/null
@@ -1 +0,0 @@
-{}
\ No newline at end of file
diff --git a/App.js b/App.js
deleted file mode 100644
index a48b444..0000000
--- a/App.js
+++ /dev/null
@@ -1,551 +0,0 @@
-import {Image, StyleSheet, Text, Pressable} from 'react-native';
-
-import HomeScreen from './src/Screens/HomeScreen';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {NavigationContainer} from '@react-navigation/native';
-import React from 'react';
-import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
-import {createStackNavigator} from '@react-navigation/stack';
-import SplashScreen from './src/Screens/SplashScreen';
-import Explore from './src/Screens/Explore';
-import Player from './src/Screens/Player';
-import ChannelScreen from './src/Screens/Channel';
-import AboutScreen from './src/Screens/About';
-import Videos from './src/Screens/Videos';
-import {createMaterialTopTabNavigator} from '@react-navigation/material-top-tabs';
-import UserScreen from './src/Screens/User';
-import UserData from './src/Utils/User.json';
-import EditVideo from './src/Screens/EditVideo';
-import EditChannel from './src/Screens/EditChannel';
-import UserVideo from './src/Screens/UserVideo';
-import Library from './src/Screens/Library';
-import Search from './src/Screens/Search';
-import Notifications from './src/Screens/Notifications';
-import Settings from './src/Screens/Settings';
-import Purchases from './src/Screens/Purchases';
-import Earnings from './src/Screens/Earnings';
-import BlockedUser from './src/Screens/Block';
-import Verification from './src/Screens/Verification';
-import AboutUs from './src/Screens/AboutUs';
-import AboutComp from './src/Screens/AboutUs_2';
-import Login from './src/Screens/Login';
-import Signup from './src/Screens/Signup';
-import PrivacyPolicy from './src/Screens/PrivacyPolicy';
-import Terms from './src/Screens/Terms';
-import HelpandSupport from './src/Screens/HelpSupport';
-
-const Stack = createStackNavigator();
-const Tab = createBottomTabNavigator();
-const TopBar = createMaterialTopTabNavigator();
-
-const MainTabs = () => {
-  return (
-    <Tab.Navigator
-      tabBarOptions={{
-        style: {
-          position: 'absolute',
-          elevation: 0,
-          shadowOpacity: 0,
-          borderTopWidth: 0.5,
-          bottom: 0,
-          height: 48,
-        },
-        labelStyle: {
-          fontFamily: 'Roboto-Light',
-          fontSize: 12,
-        },
-        activeTintColor: '#000',
-      }}
-      initialRouteName="SplashScreen"
-      backBehavior="history">
-      <Tab.Screen
-        name="Home"
-        component={HomeScreen}
-        options={{
-          tabBarLabel: 'Home',
-          tabBarIcon: tabInfo => (
-            <Icon
-              name={tabInfo.focused ? 'home' : 'home-outline'}
-              size={25}
-              color="#282828"
-            />
-          ),
-        }}
-      />
-      <Tab.Screen
-        name="Explore"
-        component={Explore}
-        options={{
-          tabBarLabel: 'Explore',
-          tabBarIcon: tabInfo => (
-            <Icon
-              name={tabInfo.focused ? 'compass' : 'compass-outline'}
-              size={25}
-              color="#282828"
-            />
-          ),
-        }}
-      />
-      <Tab.Screen
-        name="Library"
-        component={Library}
-        options={{
-          tabBarLabel: 'Library',
-          tabBarIcon: tabInfo => (
-            <Icon
-              name={tabInfo.focused ? 'apps' : 'apps-outline'}
-              size={25}
-              color="#282828"
-            />
-          ),
-        }}
-      />
-      <Tab.Screen
-        name="User"
-        component={UserChannel}
-        options={{
-          tabBarLabel: 'User',
-          tabBarIcon: tabInfo => (
-            <Image source={{uri: UserData?.avtar}} style={styles.tabAvtar} />
-          ),
-        }}
-      />
-    </Tab.Navigator>
-  );
-};
-
-const ChannelStack = () => {
-  return (
-    <TopBar.Navigator
-      backBehavior="history"
-      tabBarOptions={{
-        activeTintColor: '#040201',
-        labelStyle: {
-          fontFamily: 'Roboto-Medium',
-          fontSize: 16,
-        },
-        indicatorStyle: {
-          backgroundColor: '#040201',
-        },
-      }}>
-      <TopBar.Screen name="Home" component={ChannelScreen} />
-      <TopBar.Screen name="Videos" component={Videos} />
-      <TopBar.Screen name="About" component={AboutScreen} />
-    </TopBar.Navigator>
-  );
-};
-
-function UserChannel() {
-  return (
-    <TopBar.Navigator
-      lazy
-      removeClippedSubviews={false}
-      backBehavior="history"
-      tabBarOptions={{
-        style: {
-          borderBottomWidth: 0,
-        },
-        activeTintColor: '#212121',
-        labelStyle: {
-          fontFamily: 'Roboto-Medium',
-          fontSize: 15,
-        },
-        indicatorStyle: {
-          backgroundColor: '#212121',
-        },
-      }}>
-      <TopBar.Screen name="User" component={UserScreen} />
-      <TopBar.Screen name="Video" component={UserVideo} />
-      <TopBar.Screen name="About" component={AboutScreen} />
-    </TopBar.Navigator>
-  );
-}
-
-const App = props => {
-  return (
-    <NavigationContainer>
-      <Stack.Navigator
-        initialRouteName="Main"
-        screenOptions={{headerStyle: {elevation: 0, shadowOpacity: 0}}}>
-        <Stack.Screen
-          name="SplashScreen"
-          component={SplashScreen}
-          options={{headerShown: false}}
-        />
-        <Stack.Screen
-          name="Search"
-          component={Search}
-          options={({navigation}) => ({
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={32} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="Notifications"
-          component={Notifications}
-          options={({navigation}) => ({
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={32} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="Settings"
-          component={Settings}
-          options={({navigation}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={32} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="Main"
-          component={MainTabs}
-          options={({navigation, roue}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitleAlign: 'left',
-            headerTitle: () => (
-              <Image
-                source={require('./assets/logo.png')}
-                style={styles.logo}
-                resizeMode="contain"
-              />
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="Player"
-          component={Player}
-          options={{headerShown: false}}
-        />
-        <Stack.Screen
-          name="ChannelScreen"
-          initialParams={{optionsModal: false}}
-          component={ChannelStack}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitleAlign: 'left',
-            headerTitle: () => (
-              <Text style={styles.channelName}>
-                {route?.params.channelName}
-              </Text>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="EditVideo"
-          initialParams={{optionsModal: false}}
-          component={EditVideo}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitleAlign: 'left',
-            headerTitle: () => (
-              <Text style={styles.channelName}>{route?.params.videoTitle}</Text>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="EditProfile"
-          initialParams={{optionsModal: false}}
-          component={EditChannel}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitleAlign: 'left',
-            headerTitle: () => (
-              <Text style={styles.channelName}>
-                {route?.params.channelName}
-              </Text>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="Earnings"
-          initialParams={{optionsModal: false}}
-          component={Earnings}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-          })}
-        />
-        <Stack.Screen
-          name="Purchases"
-          initialParams={{optionsModal: false}}
-          component={Purchases}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={28} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="Verification"
-          initialParams={{optionsModal: false}}
-          component={Verification}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={28} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="AboutUs"
-          initialParams={{optionsModal: false}}
-          component={AboutUs}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={28} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="AboutComp"
-          initialParams={{optionsModal: false}}
-          component={AboutComp}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitle: 'About US RN',
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={28} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="Login"
-          initialParams={{optionsModal: false}}
-          component={Login}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitle: 'Login',
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={28} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="Signup"
-          initialParams={{optionsModal: false}}
-          component={Signup}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitle: 'Signup',
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={28} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="PrivacyPolicy"
-          initialParams={{optionsModal: false}}
-          component={PrivacyPolicy}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitle: 'Privacy Policy',
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={28} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="Terms"
-          initialParams={{optionsModal: false}}
-          component={Terms}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitle: 'Terms of Use',
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={28} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="Help"
-          initialParams={{optionsModal: false}}
-          component={HelpandSupport}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitle: 'Support',
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={28} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="BlockedList"
-          initialParams={{optionsModal: false}}
-          component={BlockedUser}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitle: 'Blocked Users',
-            headerLeft: () => (
-              <Pressable
-                style={styles.headerLeft}
-                onPress={() => navigation.goBack()}>
-                <Icon name="arrow-back-outline" color="#212121" size={28} />
-              </Pressable>
-            ),
-          })}
-        />
-        <Stack.Screen
-          name="VideosScreen"
-          initialParams={{optionsModal: false}}
-          component={Videos}
-          options={({navigation, route}) => ({
-            headerStyle: {
-              height: 45,
-              elevation: 0,
-              shadowOpacity: 0,
-            },
-            headerTitleAlign: 'left',
-            headerTitle: () => (
-              <Text style={styles.channelName}>{route?.params.screenName}</Text>
-            ),
-          })}
-        />
-      </Stack.Navigator>
-    </NavigationContainer>
-  );
-};
-
-const styles = StyleSheet.create({
-  logo: {
-    width: 90,
-  },
-  channelName: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17.5,
-    color: '#040201',
-  },
-  channelButton: {
-    marginHorizontal: 3,
-    alignSelf: 'center',
-    width: 30,
-    height: 30,
-    borderRadius: 30 / 2,
-  },
-  tabAvtar: {
-    width: 20,
-    height: 20,
-    borderRadius: 10,
-  },
-  headerLeft: {
-    marginLeft: 10,
-  },
-});
-
-export default App;
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..4a094c2
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 Anwer Solangi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index ea06b15..d2320b3 100644
--- a/README.md
+++ b/README.md
@@ -1,58 +1 @@
-# ReactTube-Youtube-clone-in-React-Native
-
-ReactTube is a Video social networking frontend UI, created in React Native, and can be used in youtube clone, dailymotion clone and all other social video networking platform. The UI is built with pure react native components and reusable components.
-
-<a href="https://www.linkedin.com/in/anwersolangi/">
-    <img src="https://img.shields.io/badge/Support-Recommend%2FEndorse%20me%20on%20Linkedin-blue?style=for-the-badge&logo=linkedin" alt="Support me on LinkedIn" /></a>
-    
-Mobile - [Download APK](https://drive.google.com/file/d/14VOMJuf-Ft5X2kB8OKIQ5ZHQ992_PUNJ/view?usp=sharing)  
-
-## Screenshots
-
-### Main Cover
-![](screenshots/Cover_1.png)
-
-### Mobile UI
-
-- Initial Views
-
-Screen 1               |  Screen 2                       | Screen 3                            |  Screen 4 
-:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:
-![](screenshots/Liked.png)|![](screenshots/Comments.png)|![](screenshots/VideoDesc.png)|![](screenshots/ExploreScreen.png)|
-
-Screen 5               |  Screen 6                       | Screen 7                            |  Screen 8 
-:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:
-![](screenshots/JoinScreen.png)|![](screenshots/LibraryScreen.png)|![](screenshots/EarningScreen.png)|![](screenshots/Splash.png)|
-
-Screen 9               |  Screen 10                       | Screen 11                            |  Screen 12 
-:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:
-![](screenshots/Settings.png)|![](screenshots/Verification.png)|![](screenshots/UserScreen.png)|![](screenshots/HomeScreen.png)|
-
-
-
-- Credit Card Component
-
-Screen 1               |  Screen 2                                 
-:-------------------------:|:-------------------------:
-![](screenshots/Purchase.png)|![](screenshots/AddCard.png)|
-
-- Insight
-
-Screen 1               |  Screen 2                                 
-:-------------------------:|:-------------------------:
-![](screenshots/Insight.png)|![](screenshots/Insight2.png)|
-
-- Login and Register Screen
-
-Screen 1               |  Screen 2                                 
-:-------------------------:|:-------------------------:
-![](screenshots/LoginScreen.png)|![](screenshots/RegisterScreen.png)|
-
-### There are many more screens, please checkout the APK
-
--
-The project is ready to use with any kind of backend. Also P.R and other code fixations are always welcome, leave a star if it helps you.
-
-<p align="justify">
-  Made With React Native 💙
-</p>
+# ReactTube---Youtube-clone-in-React-Native
\ No newline at end of file
diff --git a/__tests__/App-test.js b/__tests__/App-test.js
deleted file mode 100644
index 1784766..0000000
--- a/__tests__/App-test.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * @format
- */
-
-import 'react-native';
-import React from 'react';
-import App from '../App';
-
-// Note: test renderer must be required after react-native.
-import renderer from 'react-test-renderer';
-
-it('renders correctly', () => {
-  renderer.create(<App />);
-});
diff --git a/android/app/_BUCK b/android/app/_BUCK
deleted file mode 100644
index 413d7da..0000000
--- a/android/app/_BUCK
+++ /dev/null
@@ -1,55 +0,0 @@
-# To learn about Buck see [Docs](https://buckbuild.com/).
-# To run your application with Buck:
-# - install Buck
-# - `npm start` - to start the packager
-# - `cd android`
-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
-# - `buck install -r android/app` - compile, install and run application
-#
-
-load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
-
-lib_deps = []
-
-create_aar_targets(glob(["libs/*.aar"]))
-
-create_jar_targets(glob(["libs/*.jar"]))
-
-android_library(
-    name = "all-libs",
-    exported_deps = lib_deps,
-)
-
-android_library(
-    name = "app-code",
-    srcs = glob([
-        "src/main/java/**/*.java",
-    ]),
-    deps = [
-        ":all-libs",
-        ":build_config",
-        ":res",
-    ],
-)
-
-android_build_config(
-    name = "build_config",
-    package = "com.youtubeclone",
-)
-
-android_resource(
-    name = "res",
-    package = "com.youtubeclone",
-    res = "src/main/res",
-)
-
-android_binary(
-    name = "app",
-    keystore = "//android/keystores:debug",
-    manifest = "src/main/AndroidManifest.xml",
-    package_type = "debug",
-    deps = [
-        ":app-code",
-    ],
-)
diff --git a/android/app/build.gradle b/android/app/build.gradle
deleted file mode 100644
index f46ae93..0000000
--- a/android/app/build.gradle
+++ /dev/null
@@ -1,234 +0,0 @@
-apply plugin: "com.android.application"
-
-import com.android.build.OutputFile
-
-/**
- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
- * and bundleReleaseJsAndAssets).
- * These basically call `react-native bundle` with the correct arguments during the Android build
- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
- * bundle directly from the development server. Below you can see all the possible configurations
- * and their defaults. If you decide to add a configuration block, make sure to add it before the
- * `apply from: "../../node_modules/react-native/react.gradle"` line.
- *
- * project.ext.react = [
- *   // the name of the generated asset file containing your JS bundle
- *   bundleAssetName: "index.android.bundle",
- *
- *   // the entry file for bundle generation. If none specified and
- *   // "index.android.js" exists, it will be used. Otherwise "index.js" is
- *   // default. Can be overridden with ENTRY_FILE environment variable.
- *   entryFile: "index.android.js",
- *
- *   // https://reactnative.dev/docs/performance#enable-the-ram-format
- *   bundleCommand: "ram-bundle",
- *
- *   // whether to bundle JS and assets in debug mode
- *   bundleInDebug: false,
- *
- *   // whether to bundle JS and assets in release mode
- *   bundleInRelease: true,
- *
- *   // whether to bundle JS and assets in another build variant (if configured).
- *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
- *   // The configuration property can be in the following formats
- *   //         'bundleIn${productFlavor}${buildType}'
- *   //         'bundleIn${buildType}'
- *   // bundleInFreeDebug: true,
- *   // bundleInPaidRelease: true,
- *   // bundleInBeta: true,
- *
- *   // whether to disable dev mode in custom build variants (by default only disabled in release)
- *   // for example: to disable dev mode in the staging build type (if configured)
- *   devDisabledInStaging: true,
- *   // The configuration property can be in the following formats
- *   //         'devDisabledIn${productFlavor}${buildType}'
- *   //         'devDisabledIn${buildType}'
- *
- *   // the root of your project, i.e. where "package.json" lives
- *   root: "../../",
- *
- *   // where to put the JS bundle asset in debug mode
- *   jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
- *
- *   // where to put the JS bundle asset in release mode
- *   jsBundleDirRelease: "$buildDir/intermediates/assets/release",
- *
- *   // where to put drawable resources / React Native assets, e.g. the ones you use via
- *   // require('./image.png')), in debug mode
- *   resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
- *
- *   // where to put drawable resources / React Native assets, e.g. the ones you use via
- *   // require('./image.png')), in release mode
- *   resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
- *
- *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means
- *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
- *   // date; if you have any other folders that you want to ignore for performance reasons (gradle
- *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
- *   // for example, you might want to remove it from here.
- *   inputExcludes: ["android/**", "ios/**"],
- *
- *   // override which node gets called and with what additional arguments
- *   nodeExecutableAndArgs: ["node"],
- *
- *   // supply additional arguments to the packager
- *   extraPackagerArgs: []
- * ]
- */
-
-project.ext.react = [
-    enableHermes: false,  // clean and rebuild if changing
-]
-
-apply from: "../../node_modules/react-native/react.gradle"
-
-/**
- * Set this to true to create two separate APKs instead of one:
- *   - An APK that only works on ARM devices
- *   - An APK that only works on x86 devices
- * The advantage is the size of the APK is reduced by about 4MB.
- * Upload all the APKs to the Play Store and people will download
- * the correct one based on the CPU architecture of their device.
- */
-def enableSeparateBuildPerCPUArchitecture = false
-
-/**
- * Run Proguard to shrink the Java bytecode in release builds.
- */
-def enableProguardInReleaseBuilds = false
-
-/**
- * The preferred build flavor of JavaScriptCore.
- *
- * For example, to use the international variant, you can use:
- * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
- *
- * The international variant includes ICU i18n library and necessary data
- * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
- * give correct results when using with locales other than en-US.  Note that
- * this variant is about 6MiB larger per architecture than default.
- */
-def jscFlavor = 'org.webkit:android-jsc:+'
-
-/**
- * Whether to enable the Hermes VM.
- *
- * This should be set on project.ext.react and mirrored here.  If it is not set
- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
- * and the benefits of using Hermes will therefore be sharply reduced.
- */
-def enableHermes = project.ext.react.get("enableHermes", false);
-
-android {
-    ndkVersion rootProject.ext.ndkVersion
-
-    compileSdkVersion rootProject.ext.compileSdkVersion
-
-    compileOptions {
-        sourceCompatibility JavaVersion.VERSION_1_8
-        targetCompatibility JavaVersion.VERSION_1_8
-    }
-
-    defaultConfig {
-        applicationId "com.youtubeclone"
-        minSdkVersion rootProject.ext.minSdkVersion
-        targetSdkVersion rootProject.ext.targetSdkVersion
-        versionCode 1
-        versionName "1.0"
-    }
-    splits {
-        abi {
-            reset()
-            enable enableSeparateBuildPerCPUArchitecture
-            universalApk false  // If true, also generate a universal APK
-            include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
-        }
-    }
-    signingConfigs {
-        debug {
-            storeFile file('debug.keystore')
-            storePassword 'android'
-            keyAlias 'androiddebugkey'
-            keyPassword 'android'
-        }
-         release {
-        if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
-            storeFile file(MYAPP_RELEASE_STORE_FILE)
-            storePassword MYAPP_RELEASE_STORE_PASSWORD
-            keyAlias MYAPP_RELEASE_KEY_ALIAS
-            keyPassword MYAPP_RELEASE_KEY_PASSWORD
-        }
-    }
-    }
-    buildTypes {
-        debug {
-            signingConfig signingConfigs.debug
-        }
-        release {
-            // Caution! In production, you need to generate your own keystore file.
-            // see https://reactnative.dev/docs/signed-apk-android.
-            signingConfig signingConfigs.release
-            minifyEnabled enableProguardInReleaseBuilds
-            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
-        }
-    }
-
-    // applicationVariants are e.g. debug, release
-    applicationVariants.all { variant ->
-        variant.outputs.each { output ->
-            // For each separate APK per architecture, set a unique version code as described here:
-            // https://developer.android.com/studio/build/configure-apk-splits.html
-            // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.
-            def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
-            def abi = output.getFilter(OutputFile.ABI)
-            if (abi != null) {  // null for the universal-debug, universal-release variants
-                output.versionCodeOverride =
-                        defaultConfig.versionCode * 1000 + versionCodes.get(abi)
-            }
-
-        }
-    }
-}
-
-dependencies {
-    implementation fileTree(dir: "libs", include: ["*.jar"])
-    //noinspection GradleDynamicVersion
-    implementation "com.facebook.react:react-native:+"  // From node_modules
-
-    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
-
-    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
-      exclude group:'com.facebook.fbjni'
-    }
-
-    debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
-        exclude group:'com.facebook.flipper'
-        exclude group:'com.squareup.okhttp3', module:'okhttp'
-    }
-
-    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
-        exclude group:'com.facebook.flipper'
-    }
-
-    if (enableHermes) {
-        def hermesPath = "../../node_modules/hermes-engine/android/";
-        debugImplementation files(hermesPath + "hermes-debug.aar")
-        releaseImplementation files(hermesPath + "hermes-release.aar")
-    } else {
-        implementation jscFlavor
-    }
-}
-
-// Run this once to be able to run the application with BUCK
-// puts all compile dependencies into folder libs for BUCK to use
-task copyDownloadableDepsToLibs(type: Copy) {
-    from configurations.compile
-    into 'libs'
-}
-project.ext.vectoricons = [
-    iconFontNames: ['Ionicons.ttf']
-]
-apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
-
-apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
diff --git a/android/app/build_defs.bzl b/android/app/build_defs.bzl
deleted file mode 100644
index fff270f..0000000
--- a/android/app/build_defs.bzl
+++ /dev/null
@@ -1,19 +0,0 @@
-"""Helper definitions to glob .aar and .jar targets"""
-
-def create_aar_targets(aarfiles):
-    for aarfile in aarfiles:
-        name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
-        lib_deps.append(":" + name)
-        android_prebuilt_aar(
-            name = name,
-            aar = aarfile,
-        )
-
-def create_jar_targets(jarfiles):
-    for jarfile in jarfiles:
-        name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
-        lib_deps.append(":" + name)
-        prebuilt_jar(
-            name = name,
-            binary_jar = jarfile,
-        )
diff --git a/android/app/debug.keystore b/android/app/debug.keystore
deleted file mode 100644
index 364e105..0000000
Binary files a/android/app/debug.keystore and /dev/null differ
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
deleted file mode 100644
index 11b0257..0000000
--- a/android/app/proguard-rules.pro
+++ /dev/null
@@ -1,10 +0,0 @@
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
-#
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
deleted file mode 100644
index b2f3ad9..0000000
--- a/android/app/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools">
-
-    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
-
-    <application
-        android:usesCleartextTraffic="true"
-        tools:targetApi="28"
-        tools:ignore="GoogleAppIndexingWarning">
-        <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
-    </application>
-</manifest>
diff --git a/android/app/src/debug/java/com/youtubeclone/ReactNativeFlipper.java b/android/app/src/debug/java/com/youtubeclone/ReactNativeFlipper.java
deleted file mode 100644
index a99aa9b..0000000
--- a/android/app/src/debug/java/com/youtubeclone/ReactNativeFlipper.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * <p>This source code is licensed under the MIT license found in the LICENSE file in the root
- * directory of this source tree.
- */
-package com.youtubeclone;
-
-import android.content.Context;
-import com.facebook.flipper.android.AndroidFlipperClient;
-import com.facebook.flipper.android.utils.FlipperUtils;
-import com.facebook.flipper.core.FlipperClient;
-import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
-import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
-import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
-import com.facebook.flipper.plugins.inspector.DescriptorMapping;
-import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
-import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
-import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
-import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
-import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
-import com.facebook.react.ReactInstanceManager;
-import com.facebook.react.bridge.ReactContext;
-import com.facebook.react.modules.network.NetworkingModule;
-import okhttp3.OkHttpClient;
-
-public class ReactNativeFlipper {
-  public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
-    if (FlipperUtils.shouldEnableFlipper(context)) {
-      final FlipperClient client = AndroidFlipperClient.getInstance(context);
-
-      client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
-      client.addPlugin(new ReactFlipperPlugin());
-      client.addPlugin(new DatabasesFlipperPlugin(context));
-      client.addPlugin(new SharedPreferencesFlipperPlugin(context));
-      client.addPlugin(CrashReporterPlugin.getInstance());
-
-      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
-      NetworkingModule.setCustomClientBuilder(
-          new NetworkingModule.CustomClientBuilder() {
-            @Override
-            public void apply(OkHttpClient.Builder builder) {
-              builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
-            }
-          });
-      client.addPlugin(networkFlipperPlugin);
-      client.start();
-
-      // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
-      // Hence we run if after all native modules have been initialized
-      ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
-      if (reactContext == null) {
-        reactInstanceManager.addReactInstanceEventListener(
-            new ReactInstanceManager.ReactInstanceEventListener() {
-              @Override
-              public void onReactContextInitialized(ReactContext reactContext) {
-                reactInstanceManager.removeReactInstanceEventListener(this);
-                reactContext.runOnNativeModulesQueueThread(
-                    new Runnable() {
-                      @Override
-                      public void run() {
-                        client.addPlugin(new FrescoFlipperPlugin());
-                      }
-                    });
-              }
-            });
-      } else {
-        client.addPlugin(new FrescoFlipperPlugin());
-      }
-    }
-  }
-}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 858110f..0000000
--- a/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.youtubeclone">
-
-    <uses-permission android:name="android.permission.INTERNET" />
-
-    <application
-      android:name=".MainApplication"
-      android:label="@string/app_name"
-      android:icon="@mipmap/ic_launcher"
-      android:roundIcon="@mipmap/ic_launcher_round"
-      android:allowBackup="false"
-      android:theme="@style/AppTheme">
-      <activity
-        android:name=".MainActivity"
-        android:label="@string/app_name"
-        android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
-        android:launchMode="singleTask"
-        android:windowSoftInputMode="adjustResize">
-        <intent-filter>
-            <action android:name="android.intent.action.MAIN" />
-            <category android:name="android.intent.category.LAUNCHER" />
-        </intent-filter>
-      </activity>
-    </application>
-</manifest>
diff --git a/android/app/src/main/assets/fonts/AntDesign.ttf b/android/app/src/main/assets/fonts/AntDesign.ttf
deleted file mode 100644
index 2abf035..0000000
Binary files a/android/app/src/main/assets/fonts/AntDesign.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Entypo.ttf b/android/app/src/main/assets/fonts/Entypo.ttf
deleted file mode 100644
index 1c8f5e9..0000000
Binary files a/android/app/src/main/assets/fonts/Entypo.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/EvilIcons.ttf b/android/app/src/main/assets/fonts/EvilIcons.ttf
deleted file mode 100644
index 6868f7b..0000000
Binary files a/android/app/src/main/assets/fonts/EvilIcons.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Feather.ttf b/android/app/src/main/assets/fonts/Feather.ttf
deleted file mode 100644
index a3c58c5..0000000
Binary files a/android/app/src/main/assets/fonts/Feather.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome.ttf b/android/app/src/main/assets/fonts/FontAwesome.ttf
deleted file mode 100644
index 35acda2..0000000
Binary files a/android/app/src/main/assets/fonts/FontAwesome.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf b/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf
deleted file mode 100644
index 948a2a6..0000000
Binary files a/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf b/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf
deleted file mode 100644
index abe99e2..0000000
Binary files a/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf b/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf
deleted file mode 100644
index 5b97903..0000000
Binary files a/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Fontisto.ttf b/android/app/src/main/assets/fonts/Fontisto.ttf
deleted file mode 100644
index 96e2e81..0000000
Binary files a/android/app/src/main/assets/fonts/Fontisto.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Foundation.ttf b/android/app/src/main/assets/fonts/Foundation.ttf
deleted file mode 100644
index 6cce217..0000000
Binary files a/android/app/src/main/assets/fonts/Foundation.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Ionicons.ttf b/android/app/src/main/assets/fonts/Ionicons.ttf
deleted file mode 100644
index 719442d..0000000
Binary files a/android/app/src/main/assets/fonts/Ionicons.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf b/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf
deleted file mode 100644
index 522dc31..0000000
Binary files a/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/MaterialIcons.ttf b/android/app/src/main/assets/fonts/MaterialIcons.ttf
deleted file mode 100644
index e50801b..0000000
Binary files a/android/app/src/main/assets/fonts/MaterialIcons.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Octicons.ttf b/android/app/src/main/assets/fonts/Octicons.ttf
deleted file mode 100644
index ceac75d..0000000
Binary files a/android/app/src/main/assets/fonts/Octicons.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Roboto-Black.ttf b/android/app/src/main/assets/fonts/Roboto-Black.ttf
deleted file mode 100644
index 43a00e0..0000000
Binary files a/android/app/src/main/assets/fonts/Roboto-Black.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Roboto-Light.ttf b/android/app/src/main/assets/fonts/Roboto-Light.ttf
deleted file mode 100644
index 0e97751..0000000
Binary files a/android/app/src/main/assets/fonts/Roboto-Light.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Roboto-Medium.ttf b/android/app/src/main/assets/fonts/Roboto-Medium.ttf
deleted file mode 100644
index e89b0b7..0000000
Binary files a/android/app/src/main/assets/fonts/Roboto-Medium.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Roboto-Thin.ttf b/android/app/src/main/assets/fonts/Roboto-Thin.ttf
deleted file mode 100644
index 7d084ae..0000000
Binary files a/android/app/src/main/assets/fonts/Roboto-Thin.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/SimpleLineIcons.ttf b/android/app/src/main/assets/fonts/SimpleLineIcons.ttf
deleted file mode 100644
index 6ecb686..0000000
Binary files a/android/app/src/main/assets/fonts/SimpleLineIcons.ttf and /dev/null differ
diff --git a/android/app/src/main/assets/fonts/Zocial.ttf b/android/app/src/main/assets/fonts/Zocial.ttf
deleted file mode 100644
index e4ae46c..0000000
Binary files a/android/app/src/main/assets/fonts/Zocial.ttf and /dev/null differ
diff --git a/android/app/src/main/java/com/youtubeclone/MainActivity.java b/android/app/src/main/java/com/youtubeclone/MainActivity.java
deleted file mode 100644
index ca3fe0d..0000000
--- a/android/app/src/main/java/com/youtubeclone/MainActivity.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.youtubeclone;
-
-import com.facebook.react.ReactActivity;
-import android.content.Intent;
-import android.content.res.Configuration;
-
-public class MainActivity extends ReactActivity {
-
-  /**
-   * Returns the name of the main component registered from JavaScript. This is used to schedule
-   * rendering of the component.
-   */
-
-   @Override
-   public void onConfigurationChanged(Configuration newConfig) {
-       super.onConfigurationChanged(newConfig);
-       Intent intent = new Intent("onConfigurationChanged");
-       intent.putExtra("newConfig", newConfig);
-       this.sendBroadcast(intent);
-   }
-
-  @Override
-  protected String getMainComponentName() {
-    return "youtubeClone";
-  }
-}
diff --git a/android/app/src/main/java/com/youtubeclone/MainApplication.java b/android/app/src/main/java/com/youtubeclone/MainApplication.java
deleted file mode 100644
index 1fe2061..0000000
--- a/android/app/src/main/java/com/youtubeclone/MainApplication.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.youtubeclone;
-
-import android.app.Application;
-import android.content.Context;
-import com.facebook.react.PackageList;
-import com.facebook.react.ReactApplication;
-import com.facebook.react.ReactInstanceManager;
-import com.facebook.react.ReactNativeHost;
-import com.facebook.react.ReactPackage;
-import com.facebook.soloader.SoLoader;
-import java.lang.reflect.InvocationTargetException;
-import java.util.List;
-import org.wonday.orientation.OrientationActivityLifecycle;
-
-public class MainApplication extends Application implements ReactApplication {
-
-  private final ReactNativeHost mReactNativeHost =
-      new ReactNativeHost(this) {
-        @Override
-        public boolean getUseDeveloperSupport() {
-          return BuildConfig.DEBUG;
-        }
-
-        @Override
-        protected List<ReactPackage> getPackages() {
-          @SuppressWarnings("UnnecessaryLocalVariable")
-          List<ReactPackage> packages = new PackageList(this).getPackages();
-          // Packages that cannot be autolinked yet can be added manually here, for example:
-          // packages.add(new MyReactNativePackage());
-          return packages;
-        }
-
-        @Override
-        protected String getJSMainModuleName() {
-          return "index";
-        }
-      };
-
-  @Override
-  public ReactNativeHost getReactNativeHost() {
-    return mReactNativeHost;
-  }
-
-  @Override
-  public void onCreate() {
-    super.onCreate();
-    SoLoader.init(this, /* native exopackage */ false);
-    initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
-    registerActivityLifecycleCallbacks(OrientationActivityLifecycle.getInstance());
-  }
-
-  /**
-   * Loads Flipper in React Native templates. Call this in the onCreate method with something like
-   * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
-   *
-   * @param context
-   * @param reactInstanceManager
-   */
-  private static void initializeFlipper(
-      Context context, ReactInstanceManager reactInstanceManager) {
-    if (BuildConfig.DEBUG) {
-      try {
-        /*
-         We use reflection here to pick up the class that initializes Flipper,
-        since Flipper library is not available in release mode
-        */
-        Class<?> aClass = Class.forName("com.youtubeclone.ReactNativeFlipper");
-        aClass
-            .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
-            .invoke(null, context, reactInstanceManager);
-      } catch (ClassNotFoundException e) {
-        e.printStackTrace();
-      } catch (NoSuchMethodException e) {
-        e.printStackTrace();
-      } catch (IllegalAccessException e) {
-        e.printStackTrace();
-      } catch (InvocationTargetException e) {
-        e.printStackTrace();
-      }
-    }
-  }
-}
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index a2f5908..0000000
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index 1b52399..0000000
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index ff10afd..0000000
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index 115a4c7..0000000
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index dcd3cd8..0000000
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index 459ca60..0000000
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 8ca12fe..0000000
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index 8e19b41..0000000
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index b824ebd..0000000
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index 4c19a13..0000000
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
deleted file mode 100644
index d1061e3..0000000
--- a/android/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<resources>
-    <string name="app_name">youtubeClone</string>
-</resources>
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index 9fab0be..0000000
--- a/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<resources>
-
-    <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
-        <!-- Customize your theme here. -->
-        <item name="android:textColor">#000000</item>
-    </style>
-
-</resources>
diff --git a/android/build.gradle b/android/build.gradle
deleted file mode 100644
index 93232f5..0000000
--- a/android/build.gradle
+++ /dev/null
@@ -1,38 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
-    ext {
-        buildToolsVersion = "29.0.3"
-        minSdkVersion = 21
-        compileSdkVersion = 29
-        targetSdkVersion = 29
-        ndkVersion = "20.1.5948944"
-    }
-    repositories {
-        google()
-        jcenter()
-    }
-    dependencies {
-        classpath("com.android.tools.build:gradle:4.1.0")
-        // NOTE: Do not place your application dependencies here; they belong
-        // in the individual module build.gradle files
-    }
-}
-
-allprojects {
-    repositories {
-        mavenLocal()
-        maven {
-            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
-            url("$rootDir/../node_modules/react-native/android")
-        }
-        maven {
-            // Android JSC is installed from npm
-            url("$rootDir/../node_modules/jsc-android/dist")
-        }
-
-        google()
-        jcenter()
-        maven { url 'https://www.jitpack.io' }
-    }
-}
diff --git a/android/gradle.properties b/android/gradle.properties
deleted file mode 100644
index 8cf17c4..0000000
--- a/android/gradle.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-# Project-wide Gradle settings.
-
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-# Default value: -Xmx10248m -XX:MaxPermSize=256m
-# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
-
-# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app's APK
-# https://developer.android.com/topic/libraries/support-library/androidx-rn
-android.useAndroidX=true
-# Automatically convert third-party libraries to use AndroidX
-android.enableJetifier=true
-
-# Version of flipper SDK to use with React Native
-FLIPPER_VERSION=0.75.1
-
-MYAPP_RELEASE_STORE_FILE=Casper.keystore
-MYAPP_RELEASE_KEY_ALIAS=Casper
-MYAPP_RELEASE_STORE_PASSWORD=Casper123
-MYAPP_RELEASE_KEY_PASSWORD=Casper123
diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index e708b1c..0000000
Binary files a/android/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 14e30f7..0000000
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/android/gradlew b/android/gradlew
deleted file mode 100644
index 4f906e0..0000000
--- a/android/gradlew
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env sh
-
-#
-# Copyright 2015 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
-    echo "$*"
-}
-
-die () {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-  NONSTOP* )
-    nonstop=true
-    ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
-    JAVACMD=`cygpath --unix "$JAVACMD"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=`expr $i + 1`
-    done
-    case $i in
-        0) set -- ;;
-        1) set -- "$args0" ;;
-        2) set -- "$args0" "$args1" ;;
-        3) set -- "$args0" "$args1" "$args2" ;;
-        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Escape application args
-save () {
-    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
-    echo " "
-}
-APP_ARGS=`save "$@"`
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-exec "$JAVACMD" "$@"
diff --git a/android/gradlew.bat b/android/gradlew.bat
deleted file mode 100644
index 107acd3..0000000
--- a/android/gradlew.bat
+++ /dev/null
@@ -1,89 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem      https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/android/settings.gradle b/android/settings.gradle
deleted file mode 100644
index 621422f..0000000
--- a/android/settings.gradle
+++ /dev/null
@@ -1,5 +0,0 @@
-rootProject.name = 'youtubeClone'
-apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
-include ':react-native-video'
-project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android-exoplayer')
-include ':app'
diff --git a/app.json b/app.json
deleted file mode 100644
index dcea3a7..0000000
--- a/app.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "name": "youtubeClone",
-  "displayName": "youtubeClone"
-}
\ No newline at end of file
diff --git a/assets/background.svg b/assets/background.svg
deleted file mode 100644
index ba294d3..0000000
--- a/assets/background.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-
-			<svg width="800" height="200" viewBox="0 0 800 200" fill="none" xmlns="http://www.w3.org/2000/svg">
-				<rect width="800" height="200" fill="url(#gradient-fill)"/>
-				<defs>
-					<linearGradient id="gradient-fill" x1="0" y1="0" x2="800" y2="0" gradientUnits="userSpaceOnUse">
-						
-							<stop offset="0" stop-color="#00c6ff" />
-						
-							<stop offset="0.1" stop-color="#00bfff" />
-						
-							<stop offset="0.2" stop-color="#00b8ff" />
-						
-							<stop offset="0.30000000000000004" stop-color="#00b1ff" />
-						
-							<stop offset="0.4" stop-color="#00a9ff" />
-						
-							<stop offset="0.5" stop-color="#00a1ff" />
-						
-							<stop offset="0.6000000000000001" stop-color="#0098ff" />
-						
-							<stop offset="0.7000000000000001" stop-color="#0090ff" />
-						
-							<stop offset="0.8" stop-color="#0086ff" />
-						
-							<stop offset="0.9" stop-color="#007dff" />
-						
-							<stop offset="1" stop-color="#0072ff" />
-						
-					</linearGradient>
-				</defs>
-			</svg>
\ No newline at end of file
diff --git a/assets/bankLogo.png b/assets/bankLogo.png
deleted file mode 100644
index e76f8a3..0000000
Binary files a/assets/bankLogo.png and /dev/null differ
diff --git a/assets/creditCard.png b/assets/creditCard.png
deleted file mode 100644
index e94db7b..0000000
Binary files a/assets/creditCard.png and /dev/null differ
diff --git a/assets/defaultProfile.jpg b/assets/defaultProfile.jpg
deleted file mode 100644
index 30914f8..0000000
Binary files a/assets/defaultProfile.jpg and /dev/null differ
diff --git a/assets/fonts/Roboto-Black.ttf b/assets/fonts/Roboto-Black.ttf
deleted file mode 100644
index 43a00e0..0000000
Binary files a/assets/fonts/Roboto-Black.ttf and /dev/null differ
diff --git a/assets/fonts/Roboto-Light.ttf b/assets/fonts/Roboto-Light.ttf
deleted file mode 100644
index 0e97751..0000000
Binary files a/assets/fonts/Roboto-Light.ttf and /dev/null differ
diff --git a/assets/fonts/Roboto-Medium.ttf b/assets/fonts/Roboto-Medium.ttf
deleted file mode 100644
index e89b0b7..0000000
Binary files a/assets/fonts/Roboto-Medium.ttf and /dev/null differ
diff --git a/assets/fonts/Roboto-Thin.ttf b/assets/fonts/Roboto-Thin.ttf
deleted file mode 100644
index 7d084ae..0000000
Binary files a/assets/fonts/Roboto-Thin.ttf and /dev/null differ
diff --git a/assets/helpCenter.png b/assets/helpCenter.png
deleted file mode 100644
index 65fc42f..0000000
Binary files a/assets/helpCenter.png and /dev/null differ
diff --git a/assets/login.png b/assets/login.png
deleted file mode 100644
index a81875e..0000000
Binary files a/assets/login.png and /dev/null differ
diff --git a/assets/logo.png b/assets/logo.png
deleted file mode 100644
index 0618d4a..0000000
Binary files a/assets/logo.png and /dev/null differ
diff --git a/assets/noContent.png b/assets/noContent.png
deleted file mode 100644
index 8e11c16..0000000
Binary files a/assets/noContent.png and /dev/null differ
diff --git a/assets/payoneerLogo.png b/assets/payoneerLogo.png
deleted file mode 100644
index c57fb8c..0000000
Binary files a/assets/payoneerLogo.png and /dev/null differ
diff --git a/assets/ppLogo.png b/assets/ppLogo.png
deleted file mode 100644
index 6b6cb26..0000000
Binary files a/assets/ppLogo.png and /dev/null differ
diff --git a/babel.config.js b/babel.config.js
deleted file mode 100644
index f842b77..0000000
--- a/babel.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
-  presets: ['module:metro-react-native-babel-preset'],
-};
diff --git a/index.js b/index.js
deleted file mode 100644
index b2d3028..0000000
--- a/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * @format
- */
-
-import 'react-native-gesture-handler';
-
-import App from './App';
-import {AppRegistry} from 'react-native';
-import {name as appName} from './app.json';
-
-AppRegistry.registerComponent(appName, () => App);
diff --git a/ios/Podfile b/ios/Podfile
deleted file mode 100644
index 4c05bf5..0000000
--- a/ios/Podfile
+++ /dev/null
@@ -1,29 +0,0 @@
-require_relative '../node_modules/react-native/scripts/react_native_pods'
-require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
-
-platform :ios, '10.0'
-
-target 'youtubeClone' do
-  config = use_native_modules!
-
-  use_react_native!(
-    :path => config[:reactNativePath],
-    # to enable hermes on iOS, change `false` to `true` and then install pods
-    :hermes_enabled => false
-  )
-
-  target 'youtubeCloneTests' do
-    inherit! :complete
-    # Pods for testing
-  end
-
-  # Enables Flipper.
-  #
-  # Note that if you have use_frameworks! enabled, Flipper will not work and
-  # you should disable the next line.
-  use_flipper!()
-
-  post_install do |installer|
-    react_native_post_install(installer)
-  end
-end
\ No newline at end of file
diff --git a/ios/youtubeClone.xcodeproj/project.pbxproj b/ios/youtubeClone.xcodeproj/project.pbxproj
deleted file mode 100644
index 9627083..0000000
--- a/ios/youtubeClone.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,627 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 54;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		00E356F31AD99517003FC87E /* youtubeCloneTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* youtubeCloneTests.m */; };
-		13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
-		13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
-		13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
-		81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
-		0BD6C586610440739912B74F /* Roboto-Black.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 293722516BB24DA99615B4EB /* Roboto-Black.ttf */; };
-		75EB7A5BE2B243F7BF4B561E /* Roboto-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 698C4B84047E42AAB40BC978 /* Roboto-Light.ttf */; };
-		0C6A32DC37724D458469F830 /* Roboto-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A8727140EF3A46CB8D49998C /* Roboto-Medium.ttf */; };
-		E8C229B1008D4E00A03D25B9 /* Roboto-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B2D4EC18EEA347E3BEB8EAF7 /* Roboto-Thin.ttf */; };
-		27FAFE6FB31D450990D0E1B8 /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 323C2760876949EA95488F5A /* AntDesign.ttf */; };
-		BD0F78C491994D508166E35A /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CD476DCE8052485AA80EF8B4 /* Entypo.ttf */; };
-		57775C3814B54443A48F4E46 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 86DAB15FE7CC4D7282F1EAA3 /* EvilIcons.ttf */; };
-		377B43181E0543D085F945B8 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 998F8B7744734BCF9A8D1DF3 /* Feather.ttf */; };
-		EC303C53D2874014AD780DDB /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 65003DC3FA614A73A13744FF /* FontAwesome.ttf */; };
-		191BAC8559974CC6ABFC2F0F /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F632B4806E164411983DD74F /* FontAwesome5_Brands.ttf */; };
-		CC4391038BA746E9A3F56D5F /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 55E02698C8BC48BAAB08FCB6 /* FontAwesome5_Regular.ttf */; };
-		F9B4EE3F7258432983B2FAD0 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 25E437D6A4F84EC4BC1AD05F /* FontAwesome5_Solid.ttf */; };
-		CBECF4C1F1A148448B72721C /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 12946CA751E046F69A0C3DAE /* Fontisto.ttf */; };
-		ABA493E2175640C4B809FCAC /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 20CF9FCB7B06400D988C2FA2 /* Foundation.ttf */; };
-		DA6AEFAD9EEF4078B84EA97F /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E5F95664067146F8AFC14CA0 /* Ionicons.ttf */; };
-		EEB25367858845B1A4045F62 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8B17A61FD04E49B89748154C /* MaterialCommunityIcons.ttf */; };
-		021073B0C9F1415ABE9A8F53 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D8A913F8DAF3438B95CFCCE7 /* MaterialIcons.ttf */; };
-		73015CBAAFEB430F8D961757 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B22BD1768286409C81E733DB /* Octicons.ttf */; };
-		992256B9EE9A4E498FD18357 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0959A4E5CC464525BDAB261B /* SimpleLineIcons.ttf */; };
-		741107998E4E43FA84A25661 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2402C7F14C894EE79E417074 /* Zocial.ttf */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
-		00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
-			remoteInfo = youtubeClone;
-		};
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
-		00E356EE1AD99517003FC87E /* youtubeCloneTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = youtubeCloneTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
-		00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-		00E356F21AD99517003FC87E /* youtubeCloneTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = youtubeCloneTests.m; sourceTree = "<group>"; };
-		13B07F961A680F5B00A75B9A /* youtubeClone.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = youtubeClone.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = youtubeClone/AppDelegate.h; sourceTree = "<group>"; };
-		13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = youtubeClone/AppDelegate.m; sourceTree = "<group>"; };
-		13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = youtubeClone/Images.xcassets; sourceTree = "<group>"; };
-		13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = youtubeClone/Info.plist; sourceTree = "<group>"; };
-		13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = youtubeClone/main.m; sourceTree = "<group>"; };
-		81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = youtubeClone/LaunchScreen.storyboard; sourceTree = "<group>"; };
-		ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
-		293722516BB24DA99615B4EB /* Roboto-Black.ttf */ = {isa = PBXFileReference; name = "Roboto-Black.ttf"; path = "../assets/fonts/Roboto-Black.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		698C4B84047E42AAB40BC978 /* Roboto-Light.ttf */ = {isa = PBXFileReference; name = "Roboto-Light.ttf"; path = "../assets/fonts/Roboto-Light.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		A8727140EF3A46CB8D49998C /* Roboto-Medium.ttf */ = {isa = PBXFileReference; name = "Roboto-Medium.ttf"; path = "../assets/fonts/Roboto-Medium.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		B2D4EC18EEA347E3BEB8EAF7 /* Roboto-Thin.ttf */ = {isa = PBXFileReference; name = "Roboto-Thin.ttf"; path = "../assets/fonts/Roboto-Thin.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		323C2760876949EA95488F5A /* AntDesign.ttf */ = {isa = PBXFileReference; name = "AntDesign.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		CD476DCE8052485AA80EF8B4 /* Entypo.ttf */ = {isa = PBXFileReference; name = "Entypo.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		86DAB15FE7CC4D7282F1EAA3 /* EvilIcons.ttf */ = {isa = PBXFileReference; name = "EvilIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		998F8B7744734BCF9A8D1DF3 /* Feather.ttf */ = {isa = PBXFileReference; name = "Feather.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		65003DC3FA614A73A13744FF /* FontAwesome.ttf */ = {isa = PBXFileReference; name = "FontAwesome.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		F632B4806E164411983DD74F /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Brands.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		55E02698C8BC48BAAB08FCB6 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Regular.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		25E437D6A4F84EC4BC1AD05F /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Solid.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		12946CA751E046F69A0C3DAE /* Fontisto.ttf */ = {isa = PBXFileReference; name = "Fontisto.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		20CF9FCB7B06400D988C2FA2 /* Foundation.ttf */ = {isa = PBXFileReference; name = "Foundation.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		E5F95664067146F8AFC14CA0 /* Ionicons.ttf */ = {isa = PBXFileReference; name = "Ionicons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		8B17A61FD04E49B89748154C /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; name = "MaterialCommunityIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		D8A913F8DAF3438B95CFCCE7 /* MaterialIcons.ttf */ = {isa = PBXFileReference; name = "MaterialIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		B22BD1768286409C81E733DB /* Octicons.ttf */ = {isa = PBXFileReference; name = "Octicons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		0959A4E5CC464525BDAB261B /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; name = "SimpleLineIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-		2402C7F14C894EE79E417074 /* Zocial.ttf */ = {isa = PBXFileReference; name = "Zocial.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		00E356EB1AD99517003FC87E /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		00E356EF1AD99517003FC87E /* youtubeCloneTests */ = {
-			isa = PBXGroup;
-			children = (
-				00E356F21AD99517003FC87E /* youtubeCloneTests.m */,
-				00E356F01AD99517003FC87E /* Supporting Files */,
-			);
-			path = youtubeCloneTests;
-			sourceTree = "<group>";
-		};
-		00E356F01AD99517003FC87E /* Supporting Files */ = {
-			isa = PBXGroup;
-			children = (
-				00E356F11AD99517003FC87E /* Info.plist */,
-			);
-			name = "Supporting Files";
-			sourceTree = "<group>";
-		};
-		13B07FAE1A68108700A75B9A /* youtubeClone */ = {
-			isa = PBXGroup;
-			children = (
-				13B07FAF1A68108700A75B9A /* AppDelegate.h */,
-				13B07FB01A68108700A75B9A /* AppDelegate.m */,
-				13B07FB51A68108700A75B9A /* Images.xcassets */,
-				13B07FB61A68108700A75B9A /* Info.plist */,
-				81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
-				13B07FB71A68108700A75B9A /* main.m */,
-			);
-			name = youtubeClone;
-			sourceTree = "<group>";
-		};
-		2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-		832341AE1AAA6A7D00B99B32 /* Libraries */ = {
-			isa = PBXGroup;
-			children = (
-			);
-			name = Libraries;
-			sourceTree = "<group>";
-		};
-		83CBB9F61A601CBA00E9B192 = {
-			isa = PBXGroup;
-			children = (
-				13B07FAE1A68108700A75B9A /* youtubeClone */,
-				832341AE1AAA6A7D00B99B32 /* Libraries */,
-				00E356EF1AD99517003FC87E /* youtubeCloneTests */,
-				83CBBA001A601CBA00E9B192 /* Products */,
-				2D16E6871FA4F8E400B85C8A /* Frameworks */,
-				A5BA727D34AD44809DA7E63E /* Resources */,
-			);
-			indentWidth = 2;
-			sourceTree = "<group>";
-			tabWidth = 2;
-			usesTabs = 0;
-		};
-		83CBBA001A601CBA00E9B192 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				13B07F961A680F5B00A75B9A /* youtubeClone.app */,
-				00E356EE1AD99517003FC87E /* youtubeCloneTests.xctest */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		A5BA727D34AD44809DA7E63E /* Resources */ = {
-			isa = "PBXGroup";
-			children = (
-				293722516BB24DA99615B4EB /* Roboto-Black.ttf */,
-				698C4B84047E42AAB40BC978 /* Roboto-Light.ttf */,
-				A8727140EF3A46CB8D49998C /* Roboto-Medium.ttf */,
-				B2D4EC18EEA347E3BEB8EAF7 /* Roboto-Thin.ttf */,
-				323C2760876949EA95488F5A /* AntDesign.ttf */,
-				CD476DCE8052485AA80EF8B4 /* Entypo.ttf */,
-				86DAB15FE7CC4D7282F1EAA3 /* EvilIcons.ttf */,
-				998F8B7744734BCF9A8D1DF3 /* Feather.ttf */,
-				65003DC3FA614A73A13744FF /* FontAwesome.ttf */,
-				F632B4806E164411983DD74F /* FontAwesome5_Brands.ttf */,
-				55E02698C8BC48BAAB08FCB6 /* FontAwesome5_Regular.ttf */,
-				25E437D6A4F84EC4BC1AD05F /* FontAwesome5_Solid.ttf */,
-				12946CA751E046F69A0C3DAE /* Fontisto.ttf */,
-				20CF9FCB7B06400D988C2FA2 /* Foundation.ttf */,
-				E5F95664067146F8AFC14CA0 /* Ionicons.ttf */,
-				8B17A61FD04E49B89748154C /* MaterialCommunityIcons.ttf */,
-				D8A913F8DAF3438B95CFCCE7 /* MaterialIcons.ttf */,
-				B22BD1768286409C81E733DB /* Octicons.ttf */,
-				0959A4E5CC464525BDAB261B /* SimpleLineIcons.ttf */,
-				2402C7F14C894EE79E417074 /* Zocial.ttf */,
-			);
-			name = Resources;
-			sourceTree = "<group>";
-			path = "";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		00E356ED1AD99517003FC87E /* youtubeCloneTests */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "youtubeCloneTests" */;
-			buildPhases = (
-				00E356EA1AD99517003FC87E /* Sources */,
-				00E356EB1AD99517003FC87E /* Frameworks */,
-				00E356EC1AD99517003FC87E /* Resources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				00E356F51AD99517003FC87E /* PBXTargetDependency */,
-			);
-			name = youtubeCloneTests;
-			productName = youtubeCloneTests;
-			productReference = 00E356EE1AD99517003FC87E /* youtubeCloneTests.xctest */;
-			productType = "com.apple.product-type.bundle.unit-test";
-		};
-		13B07F861A680F5B00A75B9A /* youtubeClone */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "youtubeClone" */;
-			buildPhases = (
-				FD10A7F022414F080027D42C /* Start Packager */,
-				13B07F871A680F5B00A75B9A /* Sources */,
-				13B07F8C1A680F5B00A75B9A /* Frameworks */,
-				13B07F8E1A680F5B00A75B9A /* Resources */,
-				00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = youtubeClone;
-			productName = youtubeClone;
-			productReference = 13B07F961A680F5B00A75B9A /* youtubeClone.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		83CBB9F71A601CBA00E9B192 /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				LastUpgradeCheck = 1210;
-				TargetAttributes = {
-					00E356ED1AD99517003FC87E = {
-						CreatedOnToolsVersion = 6.2;
-						TestTargetID = 13B07F861A680F5B00A75B9A;
-					};
-					13B07F861A680F5B00A75B9A = {
-						LastSwiftMigration = 1120;
-					};
-				};
-			};
-			buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "youtubeClone" */;
-			compatibilityVersion = "Xcode 12.0";
-			developmentRegion = en;
-			hasScannedForEncodings = 0;
-			knownRegions = (
-				en,
-				Base,
-			);
-			mainGroup = 83CBB9F61A601CBA00E9B192;
-			productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				13B07F861A680F5B00A75B9A /* youtubeClone */,
-				00E356ED1AD99517003FC87E /* youtubeCloneTests */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-		00E356EC1AD99517003FC87E /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		13B07F8E1A680F5B00A75B9A /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
-				13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
-				0BD6C586610440739912B74F /* Roboto-Black.ttf in Resources */,
-				75EB7A5BE2B243F7BF4B561E /* Roboto-Light.ttf in Resources */,
-				0C6A32DC37724D458469F830 /* Roboto-Medium.ttf in Resources */,
-				E8C229B1008D4E00A03D25B9 /* Roboto-Thin.ttf in Resources */,
-				27FAFE6FB31D450990D0E1B8 /* AntDesign.ttf in Resources */,
-				BD0F78C491994D508166E35A /* Entypo.ttf in Resources */,
-				57775C3814B54443A48F4E46 /* EvilIcons.ttf in Resources */,
-				377B43181E0543D085F945B8 /* Feather.ttf in Resources */,
-				EC303C53D2874014AD780DDB /* FontAwesome.ttf in Resources */,
-				191BAC8559974CC6ABFC2F0F /* FontAwesome5_Brands.ttf in Resources */,
-				CC4391038BA746E9A3F56D5F /* FontAwesome5_Regular.ttf in Resources */,
-				F9B4EE3F7258432983B2FAD0 /* FontAwesome5_Solid.ttf in Resources */,
-				CBECF4C1F1A148448B72721C /* Fontisto.ttf in Resources */,
-				ABA493E2175640C4B809FCAC /* Foundation.ttf in Resources */,
-				DA6AEFAD9EEF4078B84EA97F /* Ionicons.ttf in Resources */,
-				EEB25367858845B1A4045F62 /* MaterialCommunityIcons.ttf in Resources */,
-				021073B0C9F1415ABE9A8F53 /* MaterialIcons.ttf in Resources */,
-				73015CBAAFEB430F8D961757 /* Octicons.ttf in Resources */,
-				992256B9EE9A4E498FD18357 /* SimpleLineIcons.ttf in Resources */,
-				741107998E4E43FA84A25661 /* Zocial.ttf in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
-		00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			name = "Bundle React Native code and images";
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "set -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
-		};
-		FD10A7F022414F080027D42C /* Start Packager */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputFileListPaths = (
-			);
-			inputPaths = (
-			);
-			name = "Start Packager";
-			outputFileListPaths = (
-			);
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n  if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n    if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n      echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n      exit 2\n    fi\n  else\n    open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n  fi\nfi\n";
-			showEnvVarsInLog = 0;
-		};
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		00E356EA1AD99517003FC87E /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				00E356F31AD99517003FC87E /* youtubeCloneTests.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		13B07F871A680F5B00A75B9A /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
-				13B07FC11A68108700A75B9A /* main.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
-		00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 13B07F861A680F5B00A75B9A /* youtubeClone */;
-			targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
-		};
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
-		00E356F61AD99517003FC87E /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUNDLE_LOADER = "$(TEST_HOST)";
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					"DEBUG=1",
-					"$(inherited)",
-				);
-				INFOPLIST_FILE = youtubeCloneTests/Info.plist;
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-					"@loader_path/Frameworks",
-				);
-				OTHER_LDFLAGS = (
-					"-ObjC",
-					"-lc++",
-					"$(inherited)",
-				);
-				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/youtubeClone.app/youtubeClone";
-			};
-			name = Debug;
-		};
-		00E356F71AD99517003FC87E /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUNDLE_LOADER = "$(TEST_HOST)";
-				COPY_PHASE_STRIP = NO;
-				INFOPLIST_FILE = youtubeCloneTests/Info.plist;
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-					"@loader_path/Frameworks",
-				);
-				OTHER_LDFLAGS = (
-					"-ObjC",
-					"-lc++",
-					"$(inherited)",
-				);
-				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/youtubeClone.app/youtubeClone";
-			};
-			name = Release;
-		};
-		13B07F941A680F5B00A75B9A /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				CLANG_ENABLE_MODULES = YES;
-				CURRENT_PROJECT_VERSION = 1;
-				ENABLE_BITCODE = NO;
-				INFOPLIST_FILE = youtubeClone/Info.plist;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				OTHER_LDFLAGS = (
-					"$(inherited)",
-					"-ObjC",
-					"-lc++",
-				);
-				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
-				PRODUCT_NAME = youtubeClone;
-				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
-				SWIFT_VERSION = 5.0;
-				VERSIONING_SYSTEM = "apple-generic";
-			};
-			name = Debug;
-		};
-		13B07F951A680F5B00A75B9A /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				CLANG_ENABLE_MODULES = YES;
-				CURRENT_PROJECT_VERSION = 1;
-				INFOPLIST_FILE = youtubeClone/Info.plist;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				OTHER_LDFLAGS = (
-					"$(inherited)",
-					"-ObjC",
-					"-lc++",
-				);
-				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
-				PRODUCT_NAME = youtubeClone;
-				SWIFT_VERSION = 5.0;
-				VERSIONING_SYSTEM = "apple-generic";
-			};
-			name = Release;
-		};
-		83CBBA201A601CBA00E9B192 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-				CLANG_CXX_LIBRARY = "libc++";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				COPY_PHASE_STRIP = NO;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				ENABLE_TESTABILITY = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					"DEBUG=1",
-					"$(inherited)",
-				);
-				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				LD_RUNPATH_SEARCH_PATHS = (
-					/usr/lib/swift,
-					"$(inherited)",
-				);
-				LIBRARY_SEARCH_PATHS = (
-					"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
-					"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"",
-					"\"$(inherited)\"",
-				);
-				MTL_ENABLE_DEBUG_INFO = YES;
-				ONLY_ACTIVE_ARCH = YES;
-				SDKROOT = iphoneos;
-			};
-			name = Debug;
-		};
-		83CBBA211A601CBA00E9B192 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-				CLANG_CXX_LIBRARY = "libc++";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				COPY_PHASE_STRIP = YES;
-				ENABLE_NS_ASSERTIONS = NO;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				LD_RUNPATH_SEARCH_PATHS = (
-					/usr/lib/swift,
-					"$(inherited)",
-				);
-				LIBRARY_SEARCH_PATHS = (
-					"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
-					"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"",
-					"\"$(inherited)\"",
-				);
-				MTL_ENABLE_DEBUG_INFO = NO;
-				SDKROOT = iphoneos;
-				VALIDATE_PRODUCT = YES;
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "youtubeCloneTests" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				00E356F61AD99517003FC87E /* Debug */,
-				00E356F71AD99517003FC87E /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "youtubeClone" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				13B07F941A680F5B00A75B9A /* Debug */,
-				13B07F951A680F5B00A75B9A /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "youtubeClone" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				83CBBA201A601CBA00E9B192 /* Debug */,
-				83CBBA211A601CBA00E9B192 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
-}
diff --git a/ios/youtubeClone.xcodeproj/xcshareddata/xcschemes/youtubeClone.xcscheme b/ios/youtubeClone.xcodeproj/xcshareddata/xcschemes/youtubeClone.xcscheme
deleted file mode 100644
index ad5fe43..0000000
--- a/ios/youtubeClone.xcodeproj/xcshareddata/xcschemes/youtubeClone.xcscheme
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "1210"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
-               BuildableName = "youtubeClone.app"
-               BlueprintName = "youtubeClone"
-               ReferencedContainer = "container:youtubeClone.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-         <TestableReference
-            skipped = "NO">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "00E356ED1AD99517003FC87E"
-               BuildableName = "youtubeCloneTests.xctest"
-               BlueprintName = "youtubeCloneTests"
-               ReferencedContainer = "container:youtubeClone.xcodeproj">
-            </BuildableReference>
-         </TestableReference>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
-            BuildableName = "youtubeClone.app"
-            BlueprintName = "youtubeClone"
-            ReferencedContainer = "container:youtubeClone.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Release"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
-            BuildableName = "youtubeClone.app"
-            BlueprintName = "youtubeClone"
-            ReferencedContainer = "container:youtubeClone.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>
diff --git a/ios/youtubeClone/AppDelegate.h b/ios/youtubeClone/AppDelegate.h
deleted file mode 100644
index ef1de86..0000000
--- a/ios/youtubeClone/AppDelegate.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#import <React/RCTBridgeDelegate.h>
-#import <UIKit/UIKit.h>
-
-@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
-
-@property (nonatomic, strong) UIWindow *window;
-
-@end
diff --git a/ios/youtubeClone/AppDelegate.m b/ios/youtubeClone/AppDelegate.m
deleted file mode 100644
index 2349b0a..0000000
--- a/ios/youtubeClone/AppDelegate.m
+++ /dev/null
@@ -1,67 +0,0 @@
-#import "AppDelegate.h"
-
-#import <React/RCTBridge.h>
-#import <React/RCTBundleURLProvider.h>
-#import <React/RCTRootView.h>
-
-#ifdef FB_SONARKIT_ENABLED
-#import <FlipperKit/FlipperClient.h>
-#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
-#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
-#import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h>
-#import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h>
-#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>
-#import "Orientation.h"
-
-static void InitializeFlipper(UIApplication *application) {
-  FlipperClient *client = [FlipperClient sharedClient];
-  SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults];
-  [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]];
-  [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]];
-  [client addPlugin:[FlipperKitReactPlugin new]];
-  [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]];
-  [client start];
-}
-#endif
-
-@implementation AppDelegate
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
-{
-#ifdef FB_SONARKIT_ENABLED
-  InitializeFlipper(application);
-#endif
-
-  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
-  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
-                                                   moduleName:@"youtubeClone"
-                                            initialProperties:nil];
-
-  if (@available(iOS 13.0, *)) {
-      rootView.backgroundColor = [UIColor systemBackgroundColor];
-  } else {
-      rootView.backgroundColor = [UIColor whiteColor];
-  }
-
-  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
-  UIViewController *rootViewController = [UIViewController new];
-  rootViewController.view = rootView;
-  self.window.rootViewController = rootViewController;
-  [self.window makeKeyAndVisible];
-  return YES;
-}
-
-- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
-{
-#if DEBUG
-  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
-#else
-  return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
-#endif
-}
-
-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
-  return [Orientation getOrientation];
-}
-
-@end
diff --git a/ios/youtubeClone/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/youtubeClone/Images.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 118c98f..0000000
--- a/ios/youtubeClone/Images.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "iphone",
-      "size" : "29x29",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "29x29",
-      "scale" : "3x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "40x40",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "40x40",
-      "scale" : "3x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "60x60",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "60x60",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}
\ No newline at end of file
diff --git a/ios/youtubeClone/Images.xcassets/Contents.json b/ios/youtubeClone/Images.xcassets/Contents.json
deleted file mode 100644
index 2d92bd5..0000000
--- a/ios/youtubeClone/Images.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}
diff --git a/ios/youtubeClone/Info.plist b/ios/youtubeClone/Info.plist
deleted file mode 100644
index 8a1b305..0000000
--- a/ios/youtubeClone/Info.plist
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>en</string>
-	<key>CFBundleDisplayName</key>
-	<string>youtubeClone</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>$(PRODUCT_NAME)</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>1.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-	<key>LSRequiresIPhoneOS</key>
-	<true/>
-	<key>NSAppTransportSecurity</key>
-	<dict>
-		<key>NSExceptionDomains</key>
-		<dict>
-			<key>localhost</key>
-			<dict>
-				<key>NSExceptionAllowsInsecureHTTPLoads</key>
-				<true/>
-			</dict>
-		</dict>
-	</dict>
-	<key>NSLocationWhenInUseUsageDescription</key>
-	<string/>
-	<key>UILaunchStoryboardName</key>
-	<string>LaunchScreen</string>
-	<key>UIRequiredDeviceCapabilities</key>
-	<array>
-		<string>armv7</string>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-	<key>UIViewControllerBasedStatusBarAppearance</key>
-	<false/>
-	<key>UIAppFonts</key>
-	<array>
-		<string>Roboto-Black.ttf</string>
-		<string>Roboto-Light.ttf</string>
-		<string>Roboto-Medium.ttf</string>
-		<string>Roboto-Thin.ttf</string>
-		<string>AntDesign.ttf</string>
-		<string>Entypo.ttf</string>
-		<string>EvilIcons.ttf</string>
-		<string>Feather.ttf</string>
-		<string>FontAwesome.ttf</string>
-		<string>FontAwesome5_Brands.ttf</string>
-		<string>FontAwesome5_Regular.ttf</string>
-		<string>FontAwesome5_Solid.ttf</string>
-		<string>Fontisto.ttf</string>
-		<string>Foundation.ttf</string>
-		<string>Ionicons.ttf</string>
-		<string>MaterialCommunityIcons.ttf</string>
-		<string>MaterialIcons.ttf</string>
-		<string>Octicons.ttf</string>
-		<string>SimpleLineIcons.ttf</string>
-		<string>Zocial.ttf</string>
-	</array>
-</dict>
-</plist>
diff --git a/ios/youtubeClone/LaunchScreen.storyboard b/ios/youtubeClone/LaunchScreen.storyboard
deleted file mode 100644
index 98fc868..0000000
--- a/ios/youtubeClone/LaunchScreen.storyboard
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
-    <device id="retina4_7" orientation="portrait" appearance="light"/>
-    <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
-        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
-        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
-    </dependencies>
-    <scenes>
-        <!--View Controller-->
-        <scene sceneID="EHf-IW-A2E">
-            <objects>
-                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
-                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <subviews>
-                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="youtubeClone" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
-                                <rect key="frame" x="0.0" y="202" width="375" height="43"/>
-                                <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
-                                <nil key="highlightedColor"/>
-                            </label>
-                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu">
-                                <rect key="frame" x="0.0" y="626" width="375" height="21"/>
-                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                <nil key="highlightedColor"/>
-                            </label>
-                        </subviews>
-                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
-                        <constraints>
-                            <constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/>
-                            <constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
-                            <constraint firstItem="MN2-I3-ftu" firstAttribute="centerX" secondItem="Bcu-3y-fUS" secondAttribute="centerX" id="akx-eg-2ui"/>
-                            <constraint firstItem="MN2-I3-ftu" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="i1E-0Y-4RG"/>
-                            <constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
-                            <constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
-                        </constraints>
-                        <viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
-                    </view>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="52.173913043478265" y="375"/>
-        </scene>
-    </scenes>
-</document>
diff --git a/ios/youtubeClone/main.m b/ios/youtubeClone/main.m
deleted file mode 100644
index b1df44b..0000000
--- a/ios/youtubeClone/main.m
+++ /dev/null
@@ -1,9 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "AppDelegate.h"
-
-int main(int argc, char * argv[]) {
-  @autoreleasepool {
-    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
-  }
-}
diff --git a/ios/youtubeCloneTests/Info.plist b/ios/youtubeCloneTests/Info.plist
deleted file mode 100644
index ba72822..0000000
--- a/ios/youtubeCloneTests/Info.plist
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>en</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>$(PRODUCT_NAME)</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>1.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-</dict>
-</plist>
diff --git a/ios/youtubeCloneTests/youtubeCloneTests.m b/ios/youtubeCloneTests/youtubeCloneTests.m
deleted file mode 100644
index 2cfa5f1..0000000
--- a/ios/youtubeCloneTests/youtubeCloneTests.m
+++ /dev/null
@@ -1,65 +0,0 @@
-#import <UIKit/UIKit.h>
-#import <XCTest/XCTest.h>
-
-#import <React/RCTLog.h>
-#import <React/RCTRootView.h>
-
-#define TIMEOUT_SECONDS 600
-#define TEXT_TO_LOOK_FOR @"Welcome to React"
-
-@interface youtubeCloneTests : XCTestCase
-
-@end
-
-@implementation youtubeCloneTests
-
-- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
-{
-  if (test(view)) {
-    return YES;
-  }
-  for (UIView *subview in [view subviews]) {
-    if ([self findSubviewInView:subview matching:test]) {
-      return YES;
-    }
-  }
-  return NO;
-}
-
-- (void)testRendersWelcomeScreen
-{
-  UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
-  NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
-  BOOL foundElement = NO;
-
-  __block NSString *redboxError = nil;
-#ifdef DEBUG
-  RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
-    if (level >= RCTLogLevelError) {
-      redboxError = message;
-    }
-  });
-#endif
-
-  while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
-    [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
-    [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
-
-    foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
-      if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
-        return YES;
-      }
-      return NO;
-    }];
-  }
-
-#ifdef DEBUG
-  RCTSetLogFunction(RCTDefaultLogFunction);
-#endif
-
-  XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
-  XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
-}
-
-
-@end
diff --git a/metro.config.js b/metro.config.js
deleted file mode 100644
index e91aba9..0000000
--- a/metro.config.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Metro configuration for React Native
- * https://github.com/facebook/react-native
- *
- * @format
- */
-
-module.exports = {
-  transformer: {
-    getTransformOptions: async () => ({
-      transform: {
-        experimentalImportSupport: false,
-        inlineRequires: true,
-      },
-    }),
-  },
-};
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 7ea039b..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,9378 +0,0 @@
-{
-  "name": "youtubeclone",
-  "version": "0.0.1",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@babel/code-frame": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
-      "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
-      "requires": {
-        "@babel/highlight": "^7.12.13"
-      }
-    },
-    "@babel/compat-data": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz",
-      "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q=="
-    },
-    "@babel/core": {
-      "version": "7.14.3",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz",
-      "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==",
-      "requires": {
-        "@babel/code-frame": "^7.12.13",
-        "@babel/generator": "^7.14.3",
-        "@babel/helper-compilation-targets": "^7.13.16",
-        "@babel/helper-module-transforms": "^7.14.2",
-        "@babel/helpers": "^7.14.0",
-        "@babel/parser": "^7.14.3",
-        "@babel/template": "^7.12.13",
-        "@babel/traverse": "^7.14.2",
-        "@babel/types": "^7.14.2",
-        "convert-source-map": "^1.7.0",
-        "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.2",
-        "json5": "^2.1.2",
-        "semver": "^6.3.0",
-        "source-map": "^0.5.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
-        }
-      }
-    },
-    "@babel/generator": {
-      "version": "7.14.3",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz",
-      "integrity": "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==",
-      "requires": {
-        "@babel/types": "^7.14.2",
-        "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="
-        }
-      }
-    },
-    "@babel/helper-annotate-as-pure": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz",
-      "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==",
-      "requires": {
-        "@babel/types": "^7.12.13"
-      }
-    },
-    "@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz",
-      "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==",
-      "requires": {
-        "@babel/helper-explode-assignable-expression": "^7.12.13",
-        "@babel/types": "^7.12.13"
-      }
-    },
-    "@babel/helper-compilation-targets": {
-      "version": "7.13.16",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz",
-      "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==",
-      "requires": {
-        "@babel/compat-data": "^7.13.15",
-        "@babel/helper-validator-option": "^7.12.17",
-        "browserslist": "^4.14.5",
-        "semver": "^6.3.0"
-      }
-    },
-    "@babel/helper-create-class-features-plugin": {
-      "version": "7.14.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.3.tgz",
-      "integrity": "sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.12.13",
-        "@babel/helper-function-name": "^7.14.2",
-        "@babel/helper-member-expression-to-functions": "^7.13.12",
-        "@babel/helper-optimise-call-expression": "^7.12.13",
-        "@babel/helper-replace-supers": "^7.14.3",
-        "@babel/helper-split-export-declaration": "^7.12.13"
-      }
-    },
-    "@babel/helper-create-regexp-features-plugin": {
-      "version": "7.14.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz",
-      "integrity": "sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.12.13",
-        "regexpu-core": "^4.7.1"
-      }
-    },
-    "@babel/helper-define-polyfill-provider": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz",
-      "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==",
-      "requires": {
-        "@babel/helper-compilation-targets": "^7.13.0",
-        "@babel/helper-module-imports": "^7.12.13",
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/traverse": "^7.13.0",
-        "debug": "^4.1.1",
-        "lodash.debounce": "^4.0.8",
-        "resolve": "^1.14.2",
-        "semver": "^6.1.2"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        }
-      }
-    },
-    "@babel/helper-explode-assignable-expression": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz",
-      "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==",
-      "requires": {
-        "@babel/types": "^7.13.0"
-      }
-    },
-    "@babel/helper-function-name": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz",
-      "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==",
-      "requires": {
-        "@babel/helper-get-function-arity": "^7.12.13",
-        "@babel/template": "^7.12.13",
-        "@babel/types": "^7.14.2"
-      }
-    },
-    "@babel/helper-get-function-arity": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz",
-      "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==",
-      "requires": {
-        "@babel/types": "^7.12.13"
-      }
-    },
-    "@babel/helper-member-expression-to-functions": {
-      "version": "7.13.12",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz",
-      "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==",
-      "requires": {
-        "@babel/types": "^7.13.12"
-      }
-    },
-    "@babel/helper-module-imports": {
-      "version": "7.13.12",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz",
-      "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==",
-      "requires": {
-        "@babel/types": "^7.13.12"
-      }
-    },
-    "@babel/helper-module-transforms": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz",
-      "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==",
-      "requires": {
-        "@babel/helper-module-imports": "^7.13.12",
-        "@babel/helper-replace-supers": "^7.13.12",
-        "@babel/helper-simple-access": "^7.13.12",
-        "@babel/helper-split-export-declaration": "^7.12.13",
-        "@babel/helper-validator-identifier": "^7.14.0",
-        "@babel/template": "^7.12.13",
-        "@babel/traverse": "^7.14.2",
-        "@babel/types": "^7.14.2"
-      }
-    },
-    "@babel/helper-optimise-call-expression": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz",
-      "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==",
-      "requires": {
-        "@babel/types": "^7.12.13"
-      }
-    },
-    "@babel/helper-plugin-utils": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz",
-      "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ=="
-    },
-    "@babel/helper-replace-supers": {
-      "version": "7.14.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz",
-      "integrity": "sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA==",
-      "requires": {
-        "@babel/helper-member-expression-to-functions": "^7.13.12",
-        "@babel/helper-optimise-call-expression": "^7.12.13",
-        "@babel/traverse": "^7.14.2",
-        "@babel/types": "^7.14.2"
-      }
-    },
-    "@babel/helper-simple-access": {
-      "version": "7.13.12",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz",
-      "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==",
-      "requires": {
-        "@babel/types": "^7.13.12"
-      }
-    },
-    "@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz",
-      "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==",
-      "requires": {
-        "@babel/types": "^7.12.1"
-      }
-    },
-    "@babel/helper-split-export-declaration": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz",
-      "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==",
-      "requires": {
-        "@babel/types": "^7.12.13"
-      }
-    },
-    "@babel/helper-validator-identifier": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
-      "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
-    },
-    "@babel/helper-validator-option": {
-      "version": "7.12.17",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz",
-      "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw=="
-    },
-    "@babel/helpers": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz",
-      "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==",
-      "requires": {
-        "@babel/template": "^7.12.13",
-        "@babel/traverse": "^7.14.0",
-        "@babel/types": "^7.14.0"
-      }
-    },
-    "@babel/highlight": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz",
-      "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==",
-      "requires": {
-        "@babel/helper-validator-identifier": "^7.14.0",
-        "chalk": "^2.0.0",
-        "js-tokens": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-          "requires": {
-            "color-convert": "^1.9.0"
-          }
-        },
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.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==",
-          "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="
-        },
-        "has-flag": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
-        },
-        "supports-color": {
-          "version": "5.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "@babel/parser": {
-      "version": "7.14.3",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.3.tgz",
-      "integrity": "sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ=="
-    },
-    "@babel/plugin-proposal-class-properties": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz",
-      "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==",
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.13.0",
-        "@babel/helper-plugin-utils": "^7.13.0"
-      }
-    },
-    "@babel/plugin-proposal-export-default-from": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.13.tgz",
-      "integrity": "sha512-idIsBT+DGXdOHL82U+8bwX4goHm/z10g8sGGrQroh+HCRcm7mDv/luaGdWJQMTuCX2FsdXS7X0Nyyzp4znAPJA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13",
-        "@babel/plugin-syntax-export-default-from": "^7.12.13"
-      }
-    },
-    "@babel/plugin-proposal-nullish-coalescing-operator": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz",
-      "integrity": "sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz",
-      "integrity": "sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw==",
-      "requires": {
-        "@babel/compat-data": "^7.14.0",
-        "@babel/helper-compilation-targets": "^7.13.16",
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-transform-parameters": "^7.14.2"
-      }
-    },
-    "@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz",
-      "integrity": "sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-optional-chaining": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz",
-      "integrity": "sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
-      }
-    },
-    "@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-bigint": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
-      "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-class-properties": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
-      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-export-default-from": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.13.tgz",
-      "integrity": "sha512-gVry0zqoums0hA+EniCYK3gABhjYSLX1dVuwYpPw9DrLNA4/GovXySHVg4FGRsZht09ON/5C2NVx3keq+qqVGQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-syntax-flow": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz",
-      "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-syntax-import-meta": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
-      "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
-      "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.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz",
-      "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@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==",
-      "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==",
-      "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==",
-      "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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-top-level-await": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz",
-      "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-syntax-typescript": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz",
-      "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-arrow-functions": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz",
-      "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0"
-      }
-    },
-    "@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz",
-      "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-block-scoping": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz",
-      "integrity": "sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0"
-      }
-    },
-    "@babel/plugin-transform-classes": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz",
-      "integrity": "sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.12.13",
-        "@babel/helper-function-name": "^7.14.2",
-        "@babel/helper-optimise-call-expression": "^7.12.13",
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/helper-replace-supers": "^7.13.12",
-        "@babel/helper-split-export-declaration": "^7.12.13",
-        "globals": "^11.1.0"
-      }
-    },
-    "@babel/plugin-transform-computed-properties": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz",
-      "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0"
-      }
-    },
-    "@babel/plugin-transform-destructuring": {
-      "version": "7.13.17",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz",
-      "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0"
-      }
-    },
-    "@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz",
-      "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==",
-      "requires": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13",
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-flow-strip-types": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz",
-      "integrity": "sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/plugin-syntax-flow": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-for-of": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz",
-      "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0"
-      }
-    },
-    "@babel/plugin-transform-function-name": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz",
-      "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==",
-      "requires": {
-        "@babel/helper-function-name": "^7.12.13",
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-literals": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz",
-      "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-member-expression-literals": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz",
-      "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-modules-commonjs": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz",
-      "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==",
-      "requires": {
-        "@babel/helper-module-transforms": "^7.14.0",
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/helper-simple-access": "^7.13.12",
-        "babel-plugin-dynamic-import-node": "^2.3.3"
-      }
-    },
-    "@babel/plugin-transform-object-assign": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.13.tgz",
-      "integrity": "sha512-4QxDMc0lAOkIBSfCrnSGbAJ+4epDBF2XXwcLXuBcG1xl9u7LrktNVD4+LwhL47XuKVPQ7R25e/WdcV+h97HyZA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-object-super": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz",
-      "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13",
-        "@babel/helper-replace-supers": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-parameters": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz",
-      "integrity": "sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0"
-      }
-    },
-    "@babel/plugin-transform-property-literals": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz",
-      "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-react-display-name": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.2.tgz",
-      "integrity": "sha512-zCubvP+jjahpnFJvPaHPiGVfuVUjXHhFvJKQdNnsmSsiU9kR/rCZ41jHc++tERD2zV+p7Hr6is+t5b6iWTCqSw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0"
-      }
-    },
-    "@babel/plugin-transform-react-jsx": {
-      "version": "7.14.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.3.tgz",
-      "integrity": "sha512-uuxuoUNVhdgYzERiHHFkE4dWoJx+UFVyuAl0aqN8P2/AKFHwqgUC5w2+4/PjpKXJsFgBlYAFXlUmDQ3k3DUkXw==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.12.13",
-        "@babel/helper-module-imports": "^7.13.12",
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/plugin-syntax-jsx": "^7.12.13",
-        "@babel/types": "^7.14.2"
-      }
-    },
-    "@babel/plugin-transform-react-jsx-self": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz",
-      "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-react-jsx-source": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.2.tgz",
-      "integrity": "sha512-OMorspVyjxghAjzgeAWc6O7W7vHbJhV69NeTGdl9Mxgz6PaweAuo7ffB9T5A1OQ9dGcw0As4SYMUhyNC4u7mVg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0"
-      }
-    },
-    "@babel/plugin-transform-regenerator": {
-      "version": "7.13.15",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz",
-      "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==",
-      "requires": {
-        "regenerator-transform": "^0.14.2"
-      }
-    },
-    "@babel/plugin-transform-runtime": {
-      "version": "7.14.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.3.tgz",
-      "integrity": "sha512-t960xbi8wpTFE623ef7sd+UpEC5T6EEguQlTBJDEO05+XwnIWVfuqLw/vdLWY6IdFmtZE+65CZAfByT39zRpkg==",
-      "requires": {
-        "@babel/helper-module-imports": "^7.13.12",
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "babel-plugin-polyfill-corejs2": "^0.2.0",
-        "babel-plugin-polyfill-corejs3": "^0.2.0",
-        "babel-plugin-polyfill-regenerator": "^0.2.0",
-        "semver": "^6.3.0"
-      }
-    },
-    "@babel/plugin-transform-shorthand-properties": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz",
-      "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-spread": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz",
-      "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
-      }
-    },
-    "@babel/plugin-transform-sticky-regex": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz",
-      "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-template-literals": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz",
-      "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0"
-      }
-    },
-    "@babel/plugin-transform-typescript": {
-      "version": "7.14.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.3.tgz",
-      "integrity": "sha512-G5Bb5pY6tJRTC4ag1visSgiDoGgJ1u1fMUgmc2ijLkcIdzP83Q1qyZX4ggFQ/SkR+PNOatkaYC+nKcTlpsX4ag==",
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.14.3",
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/plugin-syntax-typescript": "^7.12.13"
-      }
-    },
-    "@babel/plugin-transform-unicode-regex": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz",
-      "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.12.13",
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/preset-flow": {
-      "version": "7.13.13",
-      "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.13.13.tgz",
-      "integrity": "sha512-MDtwtamMifqq3R2mC7l3A3uFalUb3NH5TIBQWjN/epEPlZktcLq4se3J+ivckKrLMGsR7H9LW8+pYuIUN9tsKg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/helper-validator-option": "^7.12.17",
-        "@babel/plugin-transform-flow-strip-types": "^7.13.0"
-      }
-    },
-    "@babel/preset-typescript": {
-      "version": "7.13.0",
-      "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz",
-      "integrity": "sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/helper-validator-option": "^7.12.17",
-        "@babel/plugin-transform-typescript": "^7.13.0"
-      }
-    },
-    "@babel/register": {
-      "version": "7.13.16",
-      "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.16.tgz",
-      "integrity": "sha512-dh2t11ysujTwByQjXNgJ48QZ2zcXKQVdV8s0TbeMI0flmtGWCdTwK9tJiACHXPLmncm5+ktNn/diojA45JE4jg==",
-      "requires": {
-        "clone-deep": "^4.0.1",
-        "find-cache-dir": "^2.0.0",
-        "make-dir": "^2.1.0",
-        "pirates": "^4.0.0",
-        "source-map-support": "^0.5.16"
-      }
-    },
-    "@babel/runtime": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz",
-      "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==",
-      "requires": {
-        "regenerator-runtime": "^0.13.4"
-      }
-    },
-    "@babel/template": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz",
-      "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==",
-      "requires": {
-        "@babel/code-frame": "^7.12.13",
-        "@babel/parser": "^7.12.13",
-        "@babel/types": "^7.12.13"
-      }
-    },
-    "@babel/traverse": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz",
-      "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==",
-      "requires": {
-        "@babel/code-frame": "^7.12.13",
-        "@babel/generator": "^7.14.2",
-        "@babel/helper-function-name": "^7.14.2",
-        "@babel/helper-split-export-declaration": "^7.12.13",
-        "@babel/parser": "^7.14.2",
-        "@babel/types": "^7.14.2",
-        "debug": "^4.1.0",
-        "globals": "^11.1.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        }
-      }
-    },
-    "@babel/types": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz",
-      "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==",
-      "requires": {
-        "@babel/helper-validator-identifier": "^7.14.0",
-        "to-fast-properties": "^2.0.0"
-      }
-    },
-    "@bcoe/v8-coverage": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
-      "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
-      "dev": true
-    },
-    "@cnakazawa/watch": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
-      "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==",
-      "requires": {
-        "exec-sh": "^0.3.2",
-        "minimist": "^1.2.0"
-      }
-    },
-    "@egjs/hammerjs": {
-      "version": "2.0.17",
-      "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz",
-      "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==",
-      "requires": {
-        "@types/hammerjs": "^2.0.36"
-      }
-    },
-    "@eslint/eslintrc": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz",
-      "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==",
-      "dev": true,
-      "requires": {
-        "ajv": "^6.12.4",
-        "debug": "^4.1.1",
-        "espree": "^7.3.0",
-        "globals": "^12.1.0",
-        "ignore": "^4.0.6",
-        "import-fresh": "^3.2.1",
-        "js-yaml": "^3.13.1",
-        "lodash": "^4.17.19",
-        "minimatch": "^3.0.4",
-        "strip-json-comments": "^3.1.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "globals": {
-          "version": "12.4.0",
-          "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
-          "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
-          "dev": true,
-          "requires": {
-            "type-fest": "^0.8.1"
-          }
-        },
-        "ignore": {
-          "version": "4.0.6",
-          "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
-          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
-          "dev": true
-        },
-        "import-fresh": {
-          "version": "3.3.0",
-          "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
-          "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-          "dev": true,
-          "requires": {
-            "parent-module": "^1.0.0",
-            "resolve-from": "^4.0.0"
-          }
-        },
-        "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
-        },
-        "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
-        },
-        "type-fest": {
-          "version": "0.8.1",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-          "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-          "dev": true
-        }
-      }
-    },
-    "@hapi/hoek": {
-      "version": "9.2.0",
-      "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz",
-      "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug=="
-    },
-    "@hapi/topo": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz",
-      "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==",
-      "requires": {
-        "@hapi/hoek": "^9.0.0"
-      }
-    },
-    "@istanbuljs/load-nyc-config": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
-      "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
-      "dev": true,
-      "requires": {
-        "camelcase": "^5.3.1",
-        "find-up": "^4.1.0",
-        "get-package-type": "^0.1.0",
-        "js-yaml": "^3.13.1",
-        "resolve-from": "^5.0.0"
-      },
-      "dependencies": {
-        "resolve-from": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
-          "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
-          "dev": true
-        }
-      }
-    },
-    "@istanbuljs/schema": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
-      "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
-      "dev": true
-    },
-    "@jest/console": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz",
-      "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "jest-message-util": "^26.6.2",
-        "jest-util": "^26.6.2",
-        "slash": "^3.0.0"
-      }
-    },
-    "@jest/core": {
-      "version": "26.6.3",
-      "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz",
-      "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==",
-      "dev": true,
-      "requires": {
-        "@jest/console": "^26.6.2",
-        "@jest/reporters": "^26.6.2",
-        "@jest/test-result": "^26.6.2",
-        "@jest/transform": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "@types/node": "*",
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^4.0.0",
-        "exit": "^0.1.2",
-        "graceful-fs": "^4.2.4",
-        "jest-changed-files": "^26.6.2",
-        "jest-config": "^26.6.3",
-        "jest-haste-map": "^26.6.2",
-        "jest-message-util": "^26.6.2",
-        "jest-regex-util": "^26.0.0",
-        "jest-resolve": "^26.6.2",
-        "jest-resolve-dependencies": "^26.6.3",
-        "jest-runner": "^26.6.3",
-        "jest-runtime": "^26.6.3",
-        "jest-snapshot": "^26.6.2",
-        "jest-util": "^26.6.2",
-        "jest-validate": "^26.6.2",
-        "jest-watcher": "^26.6.2",
-        "micromatch": "^4.0.2",
-        "p-each-series": "^2.1.0",
-        "rimraf": "^3.0.0",
-        "slash": "^3.0.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "dependencies": {
-        "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
-        },
-        "rimraf": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
-        "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"
-          }
-        }
-      }
-    },
-    "@jest/create-cache-key-function": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-26.6.2.tgz",
-      "integrity": "sha512-LgEuqU1f/7WEIPYqwLPIvvHuc1sB6gMVbT6zWhin3txYUNYK/kGQrC1F2WR4gR34YlI9bBtViTm5z98RqVZAaw==",
-      "requires": {
-        "@jest/types": "^26.6.2"
-      }
-    },
-    "@jest/environment": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz",
-      "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==",
-      "dev": true,
-      "requires": {
-        "@jest/fake-timers": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "@types/node": "*",
-        "jest-mock": "^26.6.2"
-      }
-    },
-    "@jest/fake-timers": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz",
-      "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "@sinonjs/fake-timers": "^6.0.1",
-        "@types/node": "*",
-        "jest-message-util": "^26.6.2",
-        "jest-mock": "^26.6.2",
-        "jest-util": "^26.6.2"
-      }
-    },
-    "@jest/globals": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz",
-      "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==",
-      "dev": true,
-      "requires": {
-        "@jest/environment": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "expect": "^26.6.2"
-      }
-    },
-    "@jest/reporters": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz",
-      "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==",
-      "dev": true,
-      "requires": {
-        "@bcoe/v8-coverage": "^0.2.3",
-        "@jest/console": "^26.6.2",
-        "@jest/test-result": "^26.6.2",
-        "@jest/transform": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "chalk": "^4.0.0",
-        "collect-v8-coverage": "^1.0.0",
-        "exit": "^0.1.2",
-        "glob": "^7.1.2",
-        "graceful-fs": "^4.2.4",
-        "istanbul-lib-coverage": "^3.0.0",
-        "istanbul-lib-instrument": "^4.0.3",
-        "istanbul-lib-report": "^3.0.0",
-        "istanbul-lib-source-maps": "^4.0.0",
-        "istanbul-reports": "^3.0.2",
-        "jest-haste-map": "^26.6.2",
-        "jest-resolve": "^26.6.2",
-        "jest-util": "^26.6.2",
-        "jest-worker": "^26.6.2",
-        "node-notifier": "^8.0.0",
-        "slash": "^3.0.0",
-        "source-map": "^0.6.0",
-        "string-length": "^4.0.1",
-        "terminal-link": "^2.0.0",
-        "v8-to-istanbul": "^7.0.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
-        }
-      }
-    },
-    "@jest/source-map": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz",
-      "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==",
-      "dev": true,
-      "requires": {
-        "callsites": "^3.0.0",
-        "graceful-fs": "^4.2.4",
-        "source-map": "^0.6.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
-        },
-        "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
-        }
-      }
-    },
-    "@jest/test-result": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz",
-      "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==",
-      "dev": true,
-      "requires": {
-        "@jest/console": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "collect-v8-coverage": "^1.0.0"
-      }
-    },
-    "@jest/test-sequencer": {
-      "version": "26.6.3",
-      "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz",
-      "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==",
-      "dev": true,
-      "requires": {
-        "@jest/test-result": "^26.6.2",
-        "graceful-fs": "^4.2.4",
-        "jest-haste-map": "^26.6.2",
-        "jest-runner": "^26.6.3",
-        "jest-runtime": "^26.6.3"
-      }
-    },
-    "@jest/transform": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
-      "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.1.0",
-        "@jest/types": "^26.6.2",
-        "babel-plugin-istanbul": "^6.0.0",
-        "chalk": "^4.0.0",
-        "convert-source-map": "^1.4.0",
-        "fast-json-stable-stringify": "^2.0.0",
-        "graceful-fs": "^4.2.4",
-        "jest-haste-map": "^26.6.2",
-        "jest-regex-util": "^26.0.0",
-        "jest-util": "^26.6.2",
-        "micromatch": "^4.0.2",
-        "pirates": "^4.0.1",
-        "slash": "^3.0.0",
-        "source-map": "^0.6.1",
-        "write-file-atomic": "^3.0.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
-        },
-        "write-file-atomic": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
-          "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
-          "dev": true,
-          "requires": {
-            "imurmurhash": "^0.1.4",
-            "is-typedarray": "^1.0.0",
-            "signal-exit": "^3.0.2",
-            "typedarray-to-buffer": "^3.1.5"
-          }
-        }
-      }
-    },
-    "@jest/types": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
-      "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
-      "requires": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^3.0.0",
-        "@types/node": "*",
-        "@types/yargs": "^15.0.0",
-        "chalk": "^4.0.0"
-      }
-    },
-    "@jsamr/counter-style": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@jsamr/counter-style/-/counter-style-2.0.1.tgz",
-      "integrity": "sha512-ox/fGXtTRWk+si55lcfuM2oIaIxK/vPbugaeR9O++9tI/5Vx31SVkUbtvXIIN27U+thRlR0hz5b/+Geq7zg5NA=="
-    },
-    "@jsamr/react-native-li": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/@jsamr/react-native-li/-/react-native-li-2.2.1.tgz",
-      "integrity": "sha512-24lfABRzLai11PQSWMdOtwfHAr/2pnWM2adO7npE6aNFJ31u3NCp0+zlYKuo4wdOy32QI5t57KvRDKJjlWvefQ=="
-    },
-    "@native-html/css-processor": {
-      "version": "1.10.2",
-      "resolved": "https://registry.npmjs.org/@native-html/css-processor/-/css-processor-1.10.2.tgz",
-      "integrity": "sha512-cpcWZ8OcK70UE4TwrIxbaJeSX6hboO7LhAqbalWXp8pkUfEocR72AY+gi1BqQUzAH3sIU0ZUjPmec6brAg2WRQ==",
-      "requires": {
-        "css-to-react-native": "^3.0.0",
-        "csstype": "^3.0.8"
-      }
-    },
-    "@native-html/transient-render-engine": {
-      "version": "9.2.2",
-      "resolved": "https://registry.npmjs.org/@native-html/transient-render-engine/-/transient-render-engine-9.2.2.tgz",
-      "integrity": "sha512-DhJqrOYhyNmTL9ze/bGG4mbHzoJoMCPnkH/TsQT1p+ZHI5LXL8PBisKF0tiSz3B88GbgTKOO8tp1YMj0fjUNKQ==",
-      "requires": {
-        "@native-html/css-processor": "1.10.2",
-        "@types/ramda": "^0.27.40",
-        "csstype": "^3.0.8",
-        "domelementtype": "^2.2.0",
-        "domhandler": "^4.2.0",
-        "htmlparser2": "^6.1.0",
-        "ramda": "^0.27.1"
-      },
-      "dependencies": {
-        "domelementtype": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
-          "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
-        }
-      }
-    },
-    "@react-native-community/cli-debugger-ui": {
-      "version": "5.0.1-alpha.1",
-      "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-5.0.1-alpha.1.tgz",
-      "integrity": "sha512-o6msDywXU7q0dPKhCTo8IrpmJ+7o+kVghyHlrAndnb30p6vnm4pID5Yi7lHXGfs6bQXorKUWX8oD5xYwWkN8qw==",
-      "requires": {
-        "serve-static": "^1.13.1"
-      }
-    },
-    "@react-native-community/cli-hermes": {
-      "version": "5.0.1-alpha.1",
-      "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-5.0.1-alpha.1.tgz",
-      "integrity": "sha512-7FNhqeZCbON4vhzZpV8nx4gB3COJy2KGbVku376CnIAjMncxJhupqORWdMukP8jNuuvUZ1R0vj0L0+W/M5rY1w==",
-      "requires": {
-        "@react-native-community/cli-platform-android": "^5.0.1-alpha.1",
-        "@react-native-community/cli-tools": "^5.0.1-alpha.1",
-        "chalk": "^3.0.0",
-        "hermes-profile-transformer": "^0.0.6",
-        "ip": "^1.1.5"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        }
-      }
-    },
-    "@react-native-community/cli-platform-android": {
-      "version": "5.0.1-alpha.1",
-      "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-5.0.1-alpha.1.tgz",
-      "integrity": "sha512-Fx9Tm0Z9sl5CD/VS8XWIY1gTgf28MMnAvyx0oj7yO4IzWuOpJPyWxTJITc80GAK6tlyijORv5kriYpXnquxQLg==",
-      "requires": {
-        "@react-native-community/cli-tools": "^5.0.1-alpha.1",
-        "chalk": "^3.0.0",
-        "execa": "^1.0.0",
-        "fs-extra": "^8.1.0",
-        "glob": "^7.1.3",
-        "jetifier": "^1.6.2",
-        "lodash": "^4.17.15",
-        "logkitty": "^0.7.1",
-        "slash": "^3.0.0",
-        "xmldoc": "^1.1.2"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        }
-      }
-    },
-    "@react-native-community/cli-platform-ios": {
-      "version": "5.0.1-alpha.2",
-      "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-5.0.1-alpha.2.tgz",
-      "integrity": "sha512-W15A75j+4bx6qbcapFia1A0M+W3JAt7Bc4VgEYvxDDRI62EsSHk1k6ZBNxs/j0cDPSYF9ZXHlRI+CWi3r9bTbQ==",
-      "requires": {
-        "@react-native-community/cli-tools": "^5.0.1-alpha.1",
-        "chalk": "^3.0.0",
-        "glob": "^7.1.3",
-        "js-yaml": "^3.13.1",
-        "lodash": "^4.17.15",
-        "plist": "^3.0.1",
-        "xcode": "^2.0.0"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        }
-      }
-    },
-    "@react-native-community/cli-server-api": {
-      "version": "5.0.1-alpha.2",
-      "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-5.0.1-alpha.2.tgz",
-      "integrity": "sha512-qzjoLF51GmvUHQrcJZE+wD3bTmgnTNOnGBU6z4terKmPdt/EBBSUkdXc6ScWWRF6oWP+xpxLZ//tKic2v2f+ag==",
-      "requires": {
-        "@react-native-community/cli-debugger-ui": "^5.0.1-alpha.1",
-        "@react-native-community/cli-tools": "^5.0.1-alpha.1",
-        "compression": "^1.7.1",
-        "connect": "^3.6.5",
-        "errorhandler": "^1.5.0",
-        "nocache": "^2.1.0",
-        "pretty-format": "^26.6.2",
-        "serve-static": "^1.13.1",
-        "ws": "^1.1.0"
-      },
-      "dependencies": {
-        "ws": {
-          "version": "1.1.5",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
-          "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
-          "requires": {
-            "options": ">=0.0.5",
-            "ultron": "1.0.x"
-          }
-        }
-      }
-    },
-    "@react-native-community/cli-tools": {
-      "version": "5.0.1-alpha.1",
-      "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-5.0.1-alpha.1.tgz",
-      "integrity": "sha512-TwQxtfEOxGf8n5+UYKVO5exm56TwEAsWjYcoWkUKcSsIBl6VwCR4s3qGB8Y63uLUN2wf9MKnzvsaX337GjMVTA==",
-      "requires": {
-        "chalk": "^3.0.0",
-        "lodash": "^4.17.15",
-        "mime": "^2.4.1",
-        "node-fetch": "^2.6.0",
-        "open": "^6.2.0",
-        "shell-quote": "1.6.1"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "mime": {
-          "version": "2.5.2",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
-          "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg=="
-        }
-      }
-    },
-    "@react-native-community/cli-types": {
-      "version": "5.0.1-alpha.1",
-      "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-5.0.1-alpha.1.tgz",
-      "integrity": "sha512-RdsLU0Jf3HodFnAY+oxCJt3VlhaN4MxGhfISvjGzqdjq3kpzmxex3+7fi6QvS97Kd6G2cheOJAdgP5wcwxp3Ng==",
-      "requires": {
-        "ora": "^3.4.0"
-      }
-    },
-    "@react-native-community/datetimepicker": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-3.5.2.tgz",
-      "integrity": "sha512-TWRuAtr/DnrEcRewqvXMLea2oB+YF+SbtuYLHguALLxNJQLl/RFB7aTNZeF+OoH75zKFqtXECXV1/uxQUpA+sg==",
-      "requires": {
-        "invariant": "^2.2.4"
-      }
-    },
-    "@react-native-community/eslint-config": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@react-native-community/eslint-config/-/eslint-config-2.0.0.tgz",
-      "integrity": "sha512-vHaMMfvMp9BWCQQ0lNIXibOJTcXIbYUQ8dSUsMOsrXgVkeVQJj88OwrKS00rQyqwMaC4/a6HuDiFzYUkGKOpVg==",
-      "dev": true,
-      "requires": {
-        "@react-native-community/eslint-plugin": "^1.1.0",
-        "@typescript-eslint/eslint-plugin": "^3.1.0",
-        "@typescript-eslint/parser": "^3.1.0",
-        "babel-eslint": "^10.1.0",
-        "eslint-config-prettier": "^6.10.1",
-        "eslint-plugin-eslint-comments": "^3.1.2",
-        "eslint-plugin-flowtype": "2.50.3",
-        "eslint-plugin-jest": "22.4.1",
-        "eslint-plugin-prettier": "3.1.2",
-        "eslint-plugin-react": "^7.20.0",
-        "eslint-plugin-react-hooks": "^4.0.4",
-        "eslint-plugin-react-native": "^3.8.1",
-        "prettier": "^2.0.2"
-      }
-    },
-    "@react-native-community/eslint-plugin": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@react-native-community/eslint-plugin/-/eslint-plugin-1.1.0.tgz",
-      "integrity": "sha512-W/J0fNYVO01tioHjvYWQ9m6RgndVtbElzYozBq1ZPrHO/iCzlqoySHl4gO/fpCl9QEFjvJfjPgtPMTMlsoq5DQ==",
-      "dev": true
-    },
-    "@react-native-community/masked-view": {
-      "version": "0.1.11",
-      "resolved": "https://registry.npmjs.org/@react-native-community/masked-view/-/masked-view-0.1.11.tgz",
-      "integrity": "sha512-rQfMIGSR/1r/SyN87+VD8xHHzDYeHaJq6elOSCAD+0iLagXkSI2pfA0LmSXP21uw5i3em7GkkRjfJ8wpqWXZNw=="
-    },
-    "@react-native-community/progress-view": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/@react-native-community/progress-view/-/progress-view-1.3.1.tgz",
-      "integrity": "sha512-6L98VlpftdT+cUgryghLgRqwjx/dqD9cnZP+/lPPu0Iya6ejwW6D3+J2wGtykjjUVUS+L89UhdWf0TEf1Xldxw=="
-    },
-    "@react-native/assets": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz",
-      "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ=="
-    },
-    "@react-native/normalize-color": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-1.0.0.tgz",
-      "integrity": "sha512-xUNRvNmCl3UGCPbbHvfyFMnpvLPoOjDCcp5bT9m2k+TF/ZBklEQwhPZlkrxRx2NhgFh1X3a5uL7mJ7ZR+8G7Qg=="
-    },
-    "@react-native/polyfills": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-1.0.0.tgz",
-      "integrity": "sha512-0jbp4RxjYopTsIdLl+/Fy2TiwVYHy4mgeu07DG4b/LyM0OS/+lPP5c9sbnt/AMlnF6qz2JRZpPpGw1eMNS6A4w=="
-    },
-    "@react-navigation/bottom-tabs": {
-      "version": "5.11.11",
-      "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-5.11.11.tgz",
-      "integrity": "sha512-hThj6Vfw+ITzAVj5TgLEoxkVEcBD+gYeieWOe6FryBRgokgKNCzFQzqArJ5UCmNMxklNH0rstJfcdyHflLuPtw==",
-      "requires": {
-        "color": "^3.1.3",
-        "react-native-iphone-x-helper": "^1.3.0"
-      }
-    },
-    "@react-navigation/core": {
-      "version": "5.15.3",
-      "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-5.15.3.tgz",
-      "integrity": "sha512-3ZdyDInh8qg1kygCNkmh9lFgpDf29lTvPsaMe2mm/qvmxLKSgttWBz07P2fc181aV9jTdgQpzYfWZ5KWT036zw==",
-      "requires": {
-        "@react-navigation/routers": "^5.7.2",
-        "escape-string-regexp": "^4.0.0",
-        "nanoid": "^3.1.15",
-        "query-string": "^6.13.6",
-        "react-is": "^16.13.0"
-      },
-      "dependencies": {
-        "escape-string-regexp": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
-        },
-        "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=="
-        }
-      }
-    },
-    "@react-navigation/material-top-tabs": {
-      "version": "5.3.15",
-      "resolved": "https://registry.npmjs.org/@react-navigation/material-top-tabs/-/material-top-tabs-5.3.15.tgz",
-      "integrity": "sha512-oVu+KjHhLlzbkjFEyZcS2Tq/I5rf8WigtoeAYVisPncZQjnZXT3rsswBm3spN4CnJUQUDPKhg6pH8KK1iFIKzw==",
-      "requires": {
-        "color": "^3.1.3"
-      }
-    },
-    "@react-navigation/native": {
-      "version": "5.9.4",
-      "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-5.9.4.tgz",
-      "integrity": "sha512-BUCrOXfZDdKWBqM8OhOKQhCX5we4HUo5XG6tCQtVqQAep+7UcApZmMUuemUXDxVe8NPESUpoUlB0RaEpyIdfTQ==",
-      "requires": {
-        "@react-navigation/core": "^5.15.3",
-        "escape-string-regexp": "^4.0.0",
-        "nanoid": "^3.1.15"
-      },
-      "dependencies": {
-        "escape-string-regexp": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
-        }
-      }
-    },
-    "@react-navigation/routers": {
-      "version": "5.7.2",
-      "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-5.7.2.tgz",
-      "integrity": "sha512-BxNSMLHpU+oS37Xok0ql6rc9U7IC8aUD4+U5ZPbjDJ0pwzZxGGh0YOEBzfV4k/Ig3cbPdvVWbc1C9HHbCVr2oQ==",
-      "requires": {
-        "nanoid": "^3.1.15"
-      }
-    },
-    "@react-navigation/stack": {
-      "version": "5.14.5",
-      "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-5.14.5.tgz",
-      "integrity": "sha512-hpdn1SS0tc3/3atkV2Q2y++n5B4e0rUcCj4W43PODMu72yX2m0LkKAAcpkPDCWAvwnLLIoLAEl5BEifZigl/6A==",
-      "requires": {
-        "color": "^3.1.3",
-        "react-native-iphone-x-helper": "^1.3.0"
-      }
-    },
-    "@sideway/address": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz",
-      "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==",
-      "requires": {
-        "@hapi/hoek": "^9.0.0"
-      }
-    },
-    "@sideway/formula": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz",
-      "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg=="
-    },
-    "@sideway/pinpoint": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
-      "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ=="
-    },
-    "@sinonjs/commons": {
-      "version": "1.8.3",
-      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
-      "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
-      "dev": true,
-      "requires": {
-        "type-detect": "4.0.8"
-      }
-    },
-    "@sinonjs/fake-timers": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
-      "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
-      "dev": true,
-      "requires": {
-        "@sinonjs/commons": "^1.7.0"
-      }
-    },
-    "@types/babel__core": {
-      "version": "7.1.14",
-      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz",
-      "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==",
-      "dev": true,
-      "requires": {
-        "@babel/parser": "^7.1.0",
-        "@babel/types": "^7.0.0",
-        "@types/babel__generator": "*",
-        "@types/babel__template": "*",
-        "@types/babel__traverse": "*"
-      }
-    },
-    "@types/babel__generator": {
-      "version": "7.6.2",
-      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz",
-      "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.0.0"
-      }
-    },
-    "@types/babel__template": {
-      "version": "7.4.0",
-      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz",
-      "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==",
-      "dev": true,
-      "requires": {
-        "@babel/parser": "^7.1.0",
-        "@babel/types": "^7.0.0"
-      }
-    },
-    "@types/babel__traverse": {
-      "version": "7.11.1",
-      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz",
-      "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.3.0"
-      }
-    },
-    "@types/eslint-visitor-keys": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
-      "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
-      "dev": true
-    },
-    "@types/graceful-fs": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
-      "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/hammerjs": {
-      "version": "2.0.39",
-      "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.39.tgz",
-      "integrity": "sha512-lYR2Y/tV2ujpk/WyUc7S0VLI0a9hrtVIN9EwnrNo5oSEJI2cK2/XrgwOQmXLL3eTulOESvh9qP6si9+DWM9cOA=="
-    },
-    "@types/istanbul-lib-coverage": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
-      "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw=="
-    },
-    "@types/istanbul-lib-report": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
-      "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
-      "requires": {
-        "@types/istanbul-lib-coverage": "*"
-      }
-    },
-    "@types/istanbul-reports": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
-      "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
-      "requires": {
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "@types/json-schema": {
-      "version": "7.0.7",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
-      "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==",
-      "dev": true
-    },
-    "@types/node": {
-      "version": "15.3.0",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-15.3.0.tgz",
-      "integrity": "sha512-8/bnjSZD86ZfpBsDlCIkNXIvm+h6wi9g7IqL+kmFkQ+Wvu3JrasgLElfiPgoo8V8vVfnEi0QVS12gbl94h9YsQ=="
-    },
-    "@types/normalize-package-data": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
-      "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==",
-      "dev": true
-    },
-    "@types/prettier": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz",
-      "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==",
-      "dev": true
-    },
-    "@types/ramda": {
-      "version": "0.27.44",
-      "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.27.44.tgz",
-      "integrity": "sha512-SlEHKcLG36PlU+rLJwp8p4dpC9Hp/LiH6n0REX2m4iEB15PWe1qKQzgNSZrYKhTHDFvkeEM/F2gcYwfighsEuQ==",
-      "requires": {
-        "ts-toolbelt": "^6.15.1"
-      }
-    },
-    "@types/stack-utils": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz",
-      "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==",
-      "dev": true
-    },
-    "@types/urijs": {
-      "version": "1.19.16",
-      "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.16.tgz",
-      "integrity": "sha512-WgxqcUSEYijGnNWHSln/uqay+AywS3mEhLC+d2PwLsru2fLeMblvxP67Y/SCfB2Pxe+dX/zbIoNNzXY+VKOtNA=="
-    },
-    "@types/yargs": {
-      "version": "15.0.13",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz",
-      "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==",
-      "requires": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "@types/yargs-parser": {
-      "version": "20.2.0",
-      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz",
-      "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA=="
-    },
-    "@typescript-eslint/eslint-plugin": {
-      "version": "3.10.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz",
-      "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/experimental-utils": "3.10.1",
-        "debug": "^4.1.1",
-        "functional-red-black-tree": "^1.0.1",
-        "regexpp": "^3.0.0",
-        "semver": "^7.3.2",
-        "tsutils": "^3.17.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "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
-        },
-        "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
-      }
-    },
-    "@typescript-eslint/experimental-utils": {
-      "version": "3.10.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz",
-      "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==",
-      "dev": true,
-      "requires": {
-        "@types/json-schema": "^7.0.3",
-        "@typescript-eslint/types": "3.10.1",
-        "@typescript-eslint/typescript-estree": "3.10.1",
-        "eslint-scope": "^5.0.0",
-        "eslint-utils": "^2.0.0"
-      }
-    },
-    "@typescript-eslint/parser": {
-      "version": "3.10.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz",
-      "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==",
-      "dev": true,
-      "requires": {
-        "@types/eslint-visitor-keys": "^1.0.0",
-        "@typescript-eslint/experimental-utils": "3.10.1",
-        "@typescript-eslint/types": "3.10.1",
-        "@typescript-eslint/typescript-estree": "3.10.1",
-        "eslint-visitor-keys": "^1.1.0"
-      }
-    },
-    "@typescript-eslint/types": {
-      "version": "3.10.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz",
-      "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==",
-      "dev": true
-    },
-    "@typescript-eslint/typescript-estree": {
-      "version": "3.10.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz",
-      "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/types": "3.10.1",
-        "@typescript-eslint/visitor-keys": "3.10.1",
-        "debug": "^4.1.1",
-        "glob": "^7.1.6",
-        "is-glob": "^4.0.1",
-        "lodash": "^4.17.15",
-        "semver": "^7.3.2",
-        "tsutils": "^3.17.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "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
-        },
-        "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
-      }
-    },
-    "@typescript-eslint/visitor-keys": {
-      "version": "3.10.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz",
-      "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==",
-      "dev": true,
-      "requires": {
-        "eslint-visitor-keys": "^1.1.0"
-      }
-    },
-    "abab": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
-      "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
-      "dev": true
-    },
-    "abort-controller": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
-      "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
-      "requires": {
-        "event-target-shim": "^5.0.0"
-      }
-    },
-    "absolute-path": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz",
-      "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c="
-    },
-    "accepts": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
-      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
-      "requires": {
-        "mime-types": "~2.1.24",
-        "negotiator": "0.6.2"
-      }
-    },
-    "acorn": {
-      "version": "7.4.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
-      "dev": true
-    },
-    "acorn-globals": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
-      "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
-      "dev": true,
-      "requires": {
-        "acorn": "^7.1.1",
-        "acorn-walk": "^7.1.1"
-      }
-    },
-    "acorn-jsx": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
-      "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
-      "dev": true
-    },
-    "acorn-walk": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
-      "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
-      "dev": true
-    },
-    "ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "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"
-      }
-    },
-    "anser": {
-      "version": "1.4.10",
-      "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
-      "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww=="
-    },
-    "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.2",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
-      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
-      "dev": true,
-      "requires": {
-        "type-fest": "^0.21.3"
-      },
-      "dependencies": {
-        "type-fest": {
-          "version": "0.21.3",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
-          "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
-          "dev": true
-        }
-      }
-    },
-    "ansi-fragments": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
-      "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
-      "requires": {
-        "colorette": "^1.0.7",
-        "slice-ansi": "^2.0.0",
-        "strip-ansi": "^5.0.0"
-      }
-    },
-    "ansi-regex": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
-    },
-    "ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "requires": {
-        "color-convert": "^2.0.1"
-      }
-    },
-    "anymatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
-      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-      "requires": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      }
-    },
-    "appdirsjs": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.4.tgz",
-      "integrity": "sha512-WO5StDORR6JF/xYnXk/Fm0yu+iULaV5ULKuUw0Tu+jbgiTlSquaWBCgbpnsHLMXldf+fM3Gxn5p7vjond7He6w=="
-    },
-    "argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "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="
-    },
-    "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=="
-    },
-    "arr-union": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
-    },
-    "array-filter": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
-      "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw="
-    },
-    "array-includes": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz",
-      "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.2",
-        "get-intrinsic": "^1.1.1",
-        "is-string": "^1.0.5"
-      }
-    },
-    "array-map": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
-      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI="
-    },
-    "array-reduce": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
-      "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys="
-    },
-    "array-unique": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
-    },
-    "array.prototype.flatmap": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz",
-      "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.1",
-        "function-bind": "^1.1.1"
-      }
-    },
-    "asap": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
-    },
-    "asn1": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
-      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
-      "dev": true,
-      "requires": {
-        "safer-buffer": "~2.1.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="
-    },
-    "ast-types": {
-      "version": "0.14.2",
-      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz",
-      "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==",
-      "requires": {
-        "tslib": "^2.0.1"
-      }
-    },
-    "astral-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
-      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="
-    },
-    "async": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
-      "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
-      "requires": {
-        "lodash": "^4.17.14"
-      }
-    },
-    "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=="
-    },
-    "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=="
-    },
-    "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.11.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
-      "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
-      "dev": true
-    },
-    "babel-core": {
-      "version": "7.0.0-bridge.0",
-      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
-      "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg=="
-    },
-    "babel-eslint": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
-      "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "@babel/parser": "^7.7.0",
-        "@babel/traverse": "^7.7.0",
-        "@babel/types": "^7.7.0",
-        "eslint-visitor-keys": "^1.0.0",
-        "resolve": "^1.12.0"
-      }
-    },
-    "babel-jest": {
-      "version": "26.6.3",
-      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz",
-      "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==",
-      "dev": true,
-      "requires": {
-        "@jest/transform": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "@types/babel__core": "^7.1.7",
-        "babel-plugin-istanbul": "^6.0.0",
-        "babel-preset-jest": "^26.6.2",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.4",
-        "slash": "^3.0.0"
-      }
-    },
-    "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==",
-      "requires": {
-        "object.assign": "^4.1.0"
-      }
-    },
-    "babel-plugin-istanbul": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz",
-      "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.0.0",
-        "@istanbuljs/load-nyc-config": "^1.0.0",
-        "@istanbuljs/schema": "^0.1.2",
-        "istanbul-lib-instrument": "^4.0.0",
-        "test-exclude": "^6.0.0"
-      }
-    },
-    "babel-plugin-jest-hoist": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz",
-      "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==",
-      "dev": true,
-      "requires": {
-        "@babel/template": "^7.3.3",
-        "@babel/types": "^7.3.3",
-        "@types/babel__core": "^7.0.0",
-        "@types/babel__traverse": "^7.0.6"
-      }
-    },
-    "babel-plugin-polyfill-corejs2": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz",
-      "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==",
-      "requires": {
-        "@babel/compat-data": "^7.13.11",
-        "@babel/helper-define-polyfill-provider": "^0.2.0",
-        "semver": "^6.1.1"
-      }
-    },
-    "babel-plugin-polyfill-corejs3": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz",
-      "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==",
-      "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.2.0",
-        "core-js-compat": "^3.9.1"
-      }
-    },
-    "babel-plugin-polyfill-regenerator": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz",
-      "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==",
-      "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.2.0"
-      }
-    },
-    "babel-plugin-syntax-trailing-function-commas": {
-      "version": "7.0.0-beta.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz",
-      "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ=="
-    },
-    "babel-preset-current-node-syntax": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
-      "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-async-generators": "^7.8.4",
-        "@babel/plugin-syntax-bigint": "^7.8.3",
-        "@babel/plugin-syntax-class-properties": "^7.8.3",
-        "@babel/plugin-syntax-import-meta": "^7.8.3",
-        "@babel/plugin-syntax-json-strings": "^7.8.3",
-        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
-        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
-        "@babel/plugin-syntax-top-level-await": "^7.8.3"
-      }
-    },
-    "babel-preset-fbjs": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz",
-      "integrity": "sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw==",
-      "requires": {
-        "@babel/plugin-proposal-class-properties": "^7.0.0",
-        "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
-        "@babel/plugin-syntax-class-properties": "^7.0.0",
-        "@babel/plugin-syntax-flow": "^7.0.0",
-        "@babel/plugin-syntax-jsx": "^7.0.0",
-        "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
-        "@babel/plugin-transform-arrow-functions": "^7.0.0",
-        "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
-        "@babel/plugin-transform-block-scoping": "^7.0.0",
-        "@babel/plugin-transform-classes": "^7.0.0",
-        "@babel/plugin-transform-computed-properties": "^7.0.0",
-        "@babel/plugin-transform-destructuring": "^7.0.0",
-        "@babel/plugin-transform-flow-strip-types": "^7.0.0",
-        "@babel/plugin-transform-for-of": "^7.0.0",
-        "@babel/plugin-transform-function-name": "^7.0.0",
-        "@babel/plugin-transform-literals": "^7.0.0",
-        "@babel/plugin-transform-member-expression-literals": "^7.0.0",
-        "@babel/plugin-transform-modules-commonjs": "^7.0.0",
-        "@babel/plugin-transform-object-super": "^7.0.0",
-        "@babel/plugin-transform-parameters": "^7.0.0",
-        "@babel/plugin-transform-property-literals": "^7.0.0",
-        "@babel/plugin-transform-react-display-name": "^7.0.0",
-        "@babel/plugin-transform-react-jsx": "^7.0.0",
-        "@babel/plugin-transform-shorthand-properties": "^7.0.0",
-        "@babel/plugin-transform-spread": "^7.0.0",
-        "@babel/plugin-transform-template-literals": "^7.0.0",
-        "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0"
-      }
-    },
-    "babel-preset-jest": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz",
-      "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==",
-      "dev": true,
-      "requires": {
-        "babel-plugin-jest-hoist": "^26.6.2",
-        "babel-preset-current-node-syntax": "^1.0.0"
-      }
-    },
-    "balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-    },
-    "base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-      "requires": {
-        "cache-base": "^1.0.1",
-        "class-utils": "^0.3.5",
-        "component-emitter": "^1.2.1",
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.1",
-        "mixin-deep": "^1.2.0",
-        "pascalcase": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "requires": {
-            "is-descriptor": "^1.0.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==",
-          "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==",
-          "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==",
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
-    },
-    "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"
-      }
-    },
-    "big-integer": {
-      "version": "1.6.48",
-      "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
-      "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w=="
-    },
-    "boolbase": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
-    },
-    "bplist-creator": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz",
-      "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==",
-      "requires": {
-        "stream-buffers": "~2.2.0"
-      }
-    },
-    "bplist-parser": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
-      "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
-      "requires": {
-        "big-integer": "^1.6.44"
-      }
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "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==",
-      "requires": {
-        "fill-range": "^7.0.1"
-      }
-    },
-    "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
-    },
-    "browserslist": {
-      "version": "4.16.6",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
-      "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
-      "requires": {
-        "caniuse-lite": "^1.0.30001219",
-        "colorette": "^1.2.2",
-        "electron-to-chromium": "^1.3.723",
-        "escalade": "^3.1.1",
-        "node-releases": "^1.1.71"
-      }
-    },
-    "bser": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
-      "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
-      "requires": {
-        "node-int64": "^0.4.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=="
-    },
-    "bytes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
-    },
-    "cache-base": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-      "requires": {
-        "collection-visit": "^1.0.0",
-        "component-emitter": "^1.2.1",
-        "get-value": "^2.0.6",
-        "has-value": "^1.0.0",
-        "isobject": "^3.0.1",
-        "set-value": "^2.0.0",
-        "to-object-path": "^0.3.0",
-        "union-value": "^1.0.0",
-        "unset-value": "^1.0.0"
-      }
-    },
-    "call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "requires": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      }
-    },
-    "caller-callsite": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
-      "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
-      "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=",
-      "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="
-    },
-    "camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
-    },
-    "camelize": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz",
-      "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs="
-    },
-    "caniuse-lite": {
-      "version": "1.0.30001228",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz",
-      "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A=="
-    },
-    "capture-exit": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
-      "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
-      "requires": {
-        "rsvp": "^4.8.4"
-      }
-    },
-    "caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
-      "dev": true
-    },
-    "chalk": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-      "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
-      "requires": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      }
-    },
-    "char-regex": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
-      "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
-      "dev": true
-    },
-    "character-entities-html4": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz",
-      "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g=="
-    },
-    "character-entities-legacy": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
-      "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA=="
-    },
-    "ci-info": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
-      "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
-    },
-    "cjs-module-lexer": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
-      "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==",
-      "dev": true
-    },
-    "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==",
-      "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=",
-          "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=",
-      "requires": {
-        "restore-cursor": "^2.0.0"
-      }
-    },
-    "cli-spinners": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz",
-      "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q=="
-    },
-    "cliui": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
-      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
-      "requires": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^6.2.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        }
-      }
-    },
-    "clone": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
-      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
-    },
-    "clone-deep": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
-      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
-      "requires": {
-        "is-plain-object": "^2.0.4",
-        "kind-of": "^6.0.2",
-        "shallow-clone": "^3.0.0"
-      }
-    },
-    "co": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
-      "dev": true
-    },
-    "collect-v8-coverage": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
-      "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
-      "dev": true
-    },
-    "collection-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
-      "requires": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      }
-    },
-    "color": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz",
-      "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==",
-      "requires": {
-        "color-convert": "^1.9.1",
-        "color-string": "^1.5.4"
-      },
-      "dependencies": {
-        "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==",
-          "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="
-        }
-      }
-    },
-    "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==",
-      "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=="
-    },
-    "color-string": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz",
-      "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==",
-      "requires": {
-        "color-name": "^1.0.0",
-        "simple-swizzle": "^0.2.2"
-      }
-    },
-    "colorette": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
-      "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w=="
-    },
-    "colors": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
-      "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
-    },
-    "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=="
-    },
-    "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=="
-    },
-    "commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
-    },
-    "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=="
-    },
-    "compressible": {
-      "version": "2.0.18",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
-      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
-      "requires": {
-        "mime-db": ">= 1.43.0 < 2"
-      }
-    },
-    "compression": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
-      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
-      "requires": {
-        "accepts": "~1.3.5",
-        "bytes": "3.0.0",
-        "compressible": "~2.0.16",
-        "debug": "2.6.9",
-        "on-headers": "~1.0.2",
-        "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="
-    },
-    "connect": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
-      "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
-      "requires": {
-        "debug": "2.6.9",
-        "finalhandler": "1.1.2",
-        "parseurl": "~1.3.3",
-        "utils-merge": "1.0.1"
-      }
-    },
-    "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==",
-      "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="
-    },
-    "core-js-compat": {
-      "version": "3.12.1",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz",
-      "integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==",
-      "requires": {
-        "browserslist": "^4.16.6",
-        "semver": "7.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.0.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
-          "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A=="
-        }
-      }
-    },
-    "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="
-    },
-    "cosmiconfig": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
-      "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
-      "requires": {
-        "import-fresh": "^2.0.0",
-        "is-directory": "^0.3.1",
-        "js-yaml": "^3.13.1",
-        "parse-json": "^4.0.0"
-      }
-    },
-    "creditcardutils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/creditcardutils/-/creditcardutils-1.0.0.tgz",
-      "integrity": "sha1-yUrY5vXvJJsEY+Dl6o16fE6c5CU="
-    },
-    "cross-fetch": {
-      "version": "3.1.4",
-      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz",
-      "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==",
-      "requires": {
-        "node-fetch": "2.6.1"
-      }
-    },
-    "cross-spawn": {
-      "version": "6.0.5",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-      "requires": {
-        "nice-try": "^1.0.4",
-        "path-key": "^2.0.1",
-        "semver": "^5.5.0",
-        "shebang-command": "^1.2.0",
-        "which": "^1.2.9"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-        }
-      }
-    },
-    "css-color-keywords": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
-      "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU="
-    },
-    "css-select": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
-      "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
-      "requires": {
-        "boolbase": "^1.0.0",
-        "css-what": "^3.2.1",
-        "domutils": "^1.7.0",
-        "nth-check": "^1.0.2"
-      }
-    },
-    "css-to-react-native": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz",
-      "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==",
-      "requires": {
-        "camelize": "^1.0.0",
-        "css-color-keywords": "^1.0.0",
-        "postcss-value-parser": "^4.0.2"
-      }
-    },
-    "css-tree": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-      "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
-      "requires": {
-        "mdn-data": "2.0.14",
-        "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=="
-        }
-      }
-    },
-    "css-what": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
-      "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ=="
-    },
-    "cssom": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
-      "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
-      "dev": true
-    },
-    "cssstyle": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
-      "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
-      "dev": true,
-      "requires": {
-        "cssom": "~0.3.6"
-      },
-      "dependencies": {
-        "cssom": {
-          "version": "0.3.8",
-          "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
-          "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
-          "dev": true
-        }
-      }
-    },
-    "csstype": {
-      "version": "3.0.8",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
-      "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
-    },
-    "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": "2.0.0",
-      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
-      "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
-      "dev": true,
-      "requires": {
-        "abab": "^2.0.3",
-        "whatwg-mimetype": "^2.3.0",
-        "whatwg-url": "^8.0.0"
-      }
-    },
-    "dayjs": {
-      "version": "1.10.6",
-      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.6.tgz",
-      "integrity": "sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw=="
-    },
-    "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "requires": {
-        "ms": "2.0.0"
-      },
-      "dependencies": {
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-        }
-      }
-    },
-    "decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
-    },
-    "decimal.js": {
-      "version": "10.2.1",
-      "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz",
-      "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==",
-      "dev": true
-    },
-    "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="
-    },
-    "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
-    },
-    "deepmerge": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
-      "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA=="
-    },
-    "defaults": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
-      "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
-      "requires": {
-        "clone": "^1.0.2"
-      }
-    },
-    "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==",
-      "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==",
-      "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==",
-          "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==",
-          "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==",
-          "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
-    },
-    "denodeify": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
-      "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE="
-    },
-    "depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
-    },
-    "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
-    },
-    "detect-newline": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
-      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
-      "dev": true
-    },
-    "diff-sequences": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
-      "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==",
-      "dev": true
-    },
-    "doctrine": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-      "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-      "dev": true,
-      "requires": {
-        "esutils": "^2.0.2"
-      }
-    },
-    "dom-serializer": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
-      "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
-      "requires": {
-        "domelementtype": "^2.0.1",
-        "entities": "^2.0.0"
-      },
-      "dependencies": {
-        "domelementtype": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
-          "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
-        }
-      }
-    },
-    "domelementtype": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
-    },
-    "domexception": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
-      "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
-      "dev": true,
-      "requires": {
-        "webidl-conversions": "^5.0.0"
-      },
-      "dependencies": {
-        "webidl-conversions": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
-          "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
-          "dev": true
-        }
-      }
-    },
-    "domhandler": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
-      "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
-      "requires": {
-        "domelementtype": "^2.2.0"
-      },
-      "dependencies": {
-        "domelementtype": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
-          "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
-        }
-      }
-    },
-    "domutils": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
-      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
-      "requires": {
-        "dom-serializer": "0",
-        "domelementtype": "1"
-      }
-    },
-    "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="
-    },
-    "electron-to-chromium": {
-      "version": "1.3.732",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.732.tgz",
-      "integrity": "sha512-qKD5Pbq+QMk4nea4lMuncUMhpEiQwaJyCW7MrvissnRcBDENhVfDmAqQYRQ3X525oTzhar9Zh1cK0L2d1UKYcw=="
-    },
-    "eme-encryption-scheme-polyfill": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.0.3.tgz",
-      "integrity": "sha512-44CNFMsqzHdKHrzWxlS7xZ8KUHn5XutBqpmCuWzNIynmAyFInHrrD3ozv/RvK9ZhgV6QY6Easx8EWAmxteNodg=="
-    },
-    "emittery": {
-      "version": "0.7.2",
-      "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz",
-      "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==",
-      "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=="
-    },
-    "encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
-    },
-    "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==",
-      "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.2.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
-      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
-    },
-    "envinfo": {
-      "version": "7.8.1",
-      "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
-      "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw=="
-    },
-    "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==",
-      "requires": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "error-stack-parser": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz",
-      "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==",
-      "requires": {
-        "stackframe": "^1.1.1"
-      }
-    },
-    "errorhandler": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz",
-      "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==",
-      "requires": {
-        "accepts": "~1.3.7",
-        "escape-html": "~1.0.3"
-      }
-    },
-    "es-abstract": {
-      "version": "1.18.0",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz",
-      "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.2",
-        "is-callable": "^1.2.3",
-        "is-negative-zero": "^2.0.1",
-        "is-regex": "^1.1.2",
-        "is-string": "^1.0.5",
-        "object-inspect": "^1.9.0",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.2",
-        "string.prototype.trimend": "^1.0.4",
-        "string.prototype.trimstart": "^1.0.4",
-        "unbox-primitive": "^1.0.0"
-      }
-    },
-    "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.1.1",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-    },
-    "escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
-    },
-    "escodegen": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
-      "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
-      "dev": true,
-      "requires": {
-        "esprima": "^4.0.1",
-        "estraverse": "^5.2.0",
-        "esutils": "^2.0.2",
-        "optionator": "^0.8.1",
-        "source-map": "~0.6.1"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
-          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
-          "dev": true
-        },
-        "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"
-          }
-        },
-        "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"
-          }
-        },
-        "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
-        },
-        "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,
-          "optional": 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"
-          }
-        }
-      }
-    },
-    "eslint": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.14.0.tgz",
-      "integrity": "sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "@eslint/eslintrc": "^0.2.1",
-        "ajv": "^6.10.0",
-        "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
-        "debug": "^4.0.1",
-        "doctrine": "^3.0.0",
-        "enquirer": "^2.3.5",
-        "eslint-scope": "^5.1.1",
-        "eslint-utils": "^2.1.0",
-        "eslint-visitor-keys": "^2.0.0",
-        "espree": "^7.3.0",
-        "esquery": "^1.2.0",
-        "esutils": "^2.0.2",
-        "file-entry-cache": "^5.0.1",
-        "functional-red-black-tree": "^1.0.1",
-        "glob-parent": "^5.0.0",
-        "globals": "^12.1.0",
-        "ignore": "^4.0.6",
-        "import-fresh": "^3.0.0",
-        "imurmurhash": "^0.1.4",
-        "is-glob": "^4.0.0",
-        "js-yaml": "^3.13.1",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
-        "lodash": "^4.17.19",
-        "minimatch": "^3.0.4",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.9.1",
-        "progress": "^2.0.0",
-        "regexpp": "^3.1.0",
-        "semver": "^7.2.1",
-        "strip-ansi": "^6.0.0",
-        "strip-json-comments": "^3.1.0",
-        "table": "^5.2.3",
-        "text-table": "^0.2.0",
-        "v8-compile-cache": "^2.0.3"
-      },
-      "dependencies": {
-        "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
-        },
-        "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"
-          }
-        },
-        "debug": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "doctrine": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
-          "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-          "dev": true,
-          "requires": {
-            "esutils": "^2.0.2"
-          }
-        },
-        "eslint-visitor-keys": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
-          "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
-          "dev": true
-        },
-        "globals": {
-          "version": "12.4.0",
-          "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
-          "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
-          "dev": true,
-          "requires": {
-            "type-fest": "^0.8.1"
-          }
-        },
-        "ignore": {
-          "version": "4.0.6",
-          "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
-          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
-          "dev": true
-        },
-        "import-fresh": {
-          "version": "3.3.0",
-          "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
-          "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-          "dev": true,
-          "requires": {
-            "parent-module": "^1.0.0",
-            "resolve-from": "^4.0.0"
-          }
-        },
-        "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
-        },
-        "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
-        },
-        "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
-        },
-        "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "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
-        },
-        "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"
-          }
-        },
-        "type-fest": {
-          "version": "0.8.1",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-          "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-          "dev": true
-        },
-        "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"
-          }
-        }
-      }
-    },
-    "eslint-config-prettier": {
-      "version": "6.15.0",
-      "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz",
-      "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==",
-      "dev": true,
-      "requires": {
-        "get-stdin": "^6.0.0"
-      }
-    },
-    "eslint-plugin-eslint-comments": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz",
-      "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "^1.0.5",
-        "ignore": "^5.0.5"
-      }
-    },
-    "eslint-plugin-flowtype": {
-      "version": "2.50.3",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz",
-      "integrity": "sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.10"
-      }
-    },
-    "eslint-plugin-jest": {
-      "version": "22.4.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.4.1.tgz",
-      "integrity": "sha512-gcLfn6P2PrFAVx3AobaOzlIEevpAEf9chTpFZz7bYfc7pz8XRv7vuKTIE4hxPKZSha6XWKKplDQ0x9Pq8xX2mg==",
-      "dev": true
-    },
-    "eslint-plugin-prettier": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz",
-      "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==",
-      "dev": true,
-      "requires": {
-        "prettier-linter-helpers": "^1.0.0"
-      }
-    },
-    "eslint-plugin-react": {
-      "version": "7.23.2",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz",
-      "integrity": "sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw==",
-      "dev": true,
-      "requires": {
-        "array-includes": "^3.1.3",
-        "array.prototype.flatmap": "^1.2.4",
-        "doctrine": "^2.1.0",
-        "has": "^1.0.3",
-        "jsx-ast-utils": "^2.4.1 || ^3.0.0",
-        "minimatch": "^3.0.4",
-        "object.entries": "^1.1.3",
-        "object.fromentries": "^2.0.4",
-        "object.values": "^1.1.3",
-        "prop-types": "^15.7.2",
-        "resolve": "^2.0.0-next.3",
-        "string.prototype.matchall": "^4.0.4"
-      },
-      "dependencies": {
-        "resolve": {
-          "version": "2.0.0-next.3",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
-          "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
-          "dev": true,
-          "requires": {
-            "is-core-module": "^2.2.0",
-            "path-parse": "^1.0.6"
-          }
-        }
-      }
-    },
-    "eslint-plugin-react-hooks": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz",
-      "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==",
-      "dev": true
-    },
-    "eslint-plugin-react-native": {
-      "version": "3.10.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-3.10.0.tgz",
-      "integrity": "sha512-4f5+hHYYq5wFhB5eptkPEAR7FfvqbS7AzScUOANfAMZtYw5qgnCxRq45bpfBaQF+iyPMim5Q8pubcpvLv75NAg==",
-      "dev": true,
-      "requires": {
-        "@babel/traverse": "^7.7.4",
-        "eslint-plugin-react-native-globals": "^0.1.1"
-      }
-    },
-    "eslint-plugin-react-native-globals": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz",
-      "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==",
-      "dev": true
-    },
-    "eslint-scope": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
-      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-      "dev": true,
-      "requires": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      }
-    },
-    "eslint-utils": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
-      "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
-      "dev": true,
-      "requires": {
-        "eslint-visitor-keys": "^1.1.0"
-      }
-    },
-    "eslint-visitor-keys": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
-      "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
-      "dev": true
-    },
-    "espree": {
-      "version": "7.3.1",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
-      "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
-      "dev": true,
-      "requires": {
-        "acorn": "^7.4.0",
-        "acorn-jsx": "^5.3.1",
-        "eslint-visitor-keys": "^1.3.0"
-      }
-    },
-    "esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
-    },
-    "esquery": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
-      "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.1.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
-          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
-          "dev": true
-        }
-      }
-    },
-    "esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.2.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
-          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
-          "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="
-    },
-    "event-target-shim": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
-      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
-    },
-    "exec-sh": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz",
-      "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w=="
-    },
-    "execa": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-      "requires": {
-        "cross-spawn": "^6.0.0",
-        "get-stream": "^4.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"
-      }
-    },
-    "exit": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
-      "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
-      "dev": true
-    },
-    "expand-brackets": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-      "requires": {
-        "debug": "^2.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=",
-          "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=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "expect": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
-      "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "ansi-styles": "^4.0.0",
-        "jest-get-type": "^26.3.0",
-        "jest-matcher-utils": "^26.6.2",
-        "jest-message-util": "^26.6.2",
-        "jest-regex-util": "^26.0.0"
-      }
-    },
-    "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=",
-      "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==",
-          "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==",
-      "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=",
-          "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=",
-          "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==",
-          "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==",
-          "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==",
-          "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-diff": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
-      "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
-      "dev": true
-    },
-    "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
-    },
-    "fb-watchman": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
-      "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
-      "requires": {
-        "bser": "2.1.1"
-      }
-    },
-    "fbjs": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz",
-      "integrity": "sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg==",
-      "requires": {
-        "cross-fetch": "^3.0.4",
-        "fbjs-css-vars": "^1.0.0",
-        "loose-envify": "^1.0.0",
-        "object-assign": "^4.1.0",
-        "promise": "^7.1.1",
-        "setimmediate": "^1.0.5",
-        "ua-parser-js": "^0.7.18"
-      },
-      "dependencies": {
-        "promise": {
-          "version": "7.3.1",
-          "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
-          "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
-          "requires": {
-            "asap": "~2.0.3"
-          }
-        }
-      }
-    },
-    "fbjs-css-vars": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
-      "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
-    },
-    "file-entry-cache": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
-      "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
-      "dev": true,
-      "requires": {
-        "flat-cache": "^2.0.1"
-      }
-    },
-    "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==",
-      "requires": {
-        "to-regex-range": "^5.0.1"
-      }
-    },
-    "filter-obj": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
-      "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs="
-    },
-    "finalhandler": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
-      "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"
-      }
-    },
-    "find-cache-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-      "requires": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      }
-    },
-    "find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "requires": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      }
-    },
-    "flat-cache": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
-      "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
-      "dev": true,
-      "requires": {
-        "flatted": "^2.0.0",
-        "rimraf": "2.6.3",
-        "write": "1.0.3"
-      },
-      "dependencies": {
-        "rimraf": {
-          "version": "2.6.3",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-          "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        }
-      }
-    },
-    "flatted": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
-      "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
-      "dev": true
-    },
-    "flow-parser": {
-      "version": "0.121.0",
-      "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz",
-      "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg=="
-    },
-    "for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
-    },
-    "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=",
-      "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="
-    },
-    "fs-extra": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-      "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-      "requires": {
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      }
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
-    },
-    "fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "optional": true
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
-    },
-    "functional-red-black-tree": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
-      "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
-      "dev": true
-    },
-    "gensync": {
-      "version": "1.0.0-beta.2",
-      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
-      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
-    },
-    "get-caller-file": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
-    },
-    "get-intrinsic": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
-      "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
-      "requires": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.1"
-      }
-    },
-    "get-package-type": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
-      "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
-      "dev": true
-    },
-    "get-stdin": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
-      "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
-      "dev": true
-    },
-    "get-stream": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-      "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="
-    },
-    "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.7",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
-      "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
-      "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.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "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=="
-    },
-    "graceful-fs": {
-      "version": "4.2.6",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
-      "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
-    },
-    "growly": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
-      "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
-      "dev": true,
-      "optional": 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==",
-      "requires": {
-        "function-bind": "^1.1.1"
-      }
-    },
-    "has-bigints": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
-      "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
-      "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=="
-    },
-    "has-symbols": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
-      "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
-    },
-    "has-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
-      "requires": {
-        "get-value": "^2.0.6",
-        "has-values": "^1.0.0",
-        "isobject": "^3.0.0"
-      }
-    },
-    "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=",
-      "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=",
-          "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=",
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "kind-of": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "hermes-engine": {
-      "version": "0.7.2",
-      "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.7.2.tgz",
-      "integrity": "sha512-E2DkRaO97gwL98LPhgfkMqhHiNsrAjIfEk3wWYn2Y31xdkdWn0572H7RnVcGujMJVqZNJvtknxlpsUb8Wzc3KA=="
-    },
-    "hermes-profile-transformer": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz",
-      "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==",
-      "requires": {
-        "source-map": "^0.7.3"
-      }
-    },
-    "hoist-non-react-statics": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
-      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
-      "requires": {
-        "react-is": "^16.7.0"
-      },
-      "dependencies": {
-        "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=="
-        }
-      }
-    },
-    "hosted-git-info": {
-      "version": "2.8.9",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
-      "dev": true
-    },
-    "html-encoding-sniffer": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
-      "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
-      "dev": true,
-      "requires": {
-        "whatwg-encoding": "^1.0.5"
-      }
-    },
-    "html-escaper": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
-      "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
-      "dev": true
-    },
-    "htmlparser2": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
-      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
-      "requires": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.0.0",
-        "domutils": "^2.5.2",
-        "entities": "^2.0.0"
-      },
-      "dependencies": {
-        "dom-serializer": {
-          "version": "1.3.2",
-          "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
-          "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
-          "requires": {
-            "domelementtype": "^2.0.1",
-            "domhandler": "^4.2.0",
-            "entities": "^2.0.0"
-          }
-        },
-        "domelementtype": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
-          "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
-        },
-        "domutils": {
-          "version": "2.7.0",
-          "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz",
-          "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==",
-          "requires": {
-            "dom-serializer": "^1.0.1",
-            "domelementtype": "^2.2.0",
-            "domhandler": "^4.2.0"
-          }
-        }
-      }
-    },
-    "http-errors": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
-      "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
-      "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"
-      }
-    },
-    "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"
-      }
-    },
-    "ignore": {
-      "version": "5.1.8",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
-      "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
-      "dev": true
-    },
-    "image-size": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz",
-      "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA=="
-    },
-    "import-fresh": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
-      "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
-      "requires": {
-        "caller-path": "^2.0.0",
-        "resolve-from": "^3.0.0"
-      }
-    },
-    "import-local": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
-      "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
-      "dev": true,
-      "requires": {
-        "pkg-dir": "^4.2.0",
-        "resolve-cwd": "^3.0.0"
-      },
-      "dependencies": {
-        "pkg-dir": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-          "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-          "dev": true,
-          "requires": {
-            "find-up": "^4.0.0"
-          }
-        }
-      }
-    },
-    "imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "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=="
-    },
-    "internal-slot": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
-      "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
-      "dev": true,
-      "requires": {
-        "get-intrinsic": "^1.1.0",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "interpret": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
-      "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
-    },
-    "invariant": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-      "requires": {
-        "loose-envify": "^1.0.0"
-      }
-    },
-    "ip": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
-      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
-    },
-    "is-accessor-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-      "requires": {
-        "kind-of": "^3.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=",
-          "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="
-    },
-    "is-bigint": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz",
-      "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==",
-      "dev": true
-    },
-    "is-boolean-object": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz",
-      "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
-    "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.2.3",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz",
-      "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==",
-      "dev": true
-    },
-    "is-ci": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
-      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
-      "requires": {
-        "ci-info": "^2.0.0"
-      }
-    },
-    "is-core-module": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
-      "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
-      "requires": {
-        "has": "^1.0.3"
-      }
-    },
-    "is-data-descriptor": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-      "requires": {
-        "kind-of": "^3.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=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-date-object": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz",
-      "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==",
-      "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==",
-      "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=="
-        }
-      }
-    },
-    "is-directory": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
-      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE="
-    },
-    "is-docker": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
-      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
-      "dev": true,
-      "optional": true
-    },
-    "is-extendable": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
-    },
-    "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": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
-    },
-    "is-generator-fn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
-      "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
-      "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-negative-zero": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
-      "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
-      "dev": true
-    },
-    "is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
-    },
-    "is-number-object": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz",
-      "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==",
-      "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==",
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "is-potential-custom-element-name": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
-      "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
-      "dev": true
-    },
-    "is-regex": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz",
-      "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "is-stream": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
-    },
-    "is-string": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz",
-      "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==",
-      "dev": true
-    },
-    "is-symbol": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
-      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-      "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "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-windows": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
-    },
-    "is-wsl": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
-    },
-    "isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-    },
-    "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
-    },
-    "istanbul-lib-coverage": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
-      "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
-      "dev": true
-    },
-    "istanbul-lib-instrument": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
-      "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.7.5",
-        "@istanbuljs/schema": "^0.1.2",
-        "istanbul-lib-coverage": "^3.0.0",
-        "semver": "^6.3.0"
-      }
-    },
-    "istanbul-lib-report": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
-      "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
-      "dev": true,
-      "requires": {
-        "istanbul-lib-coverage": "^3.0.0",
-        "make-dir": "^3.0.0",
-        "supports-color": "^7.1.0"
-      },
-      "dependencies": {
-        "make-dir": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-          "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-          "dev": true,
-          "requires": {
-            "semver": "^6.0.0"
-          }
-        }
-      }
-    },
-    "istanbul-lib-source-maps": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz",
-      "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==",
-      "dev": true,
-      "requires": {
-        "debug": "^4.1.1",
-        "istanbul-lib-coverage": "^3.0.0",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "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
-        },
-        "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
-        }
-      }
-    },
-    "istanbul-reports": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz",
-      "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==",
-      "dev": true,
-      "requires": {
-        "html-escaper": "^2.0.0",
-        "istanbul-lib-report": "^3.0.0"
-      }
-    },
-    "jest": {
-      "version": "26.6.3",
-      "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz",
-      "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==",
-      "dev": true,
-      "requires": {
-        "@jest/core": "^26.6.3",
-        "import-local": "^3.0.2",
-        "jest-cli": "^26.6.3"
-      },
-      "dependencies": {
-        "jest-cli": {
-          "version": "26.6.3",
-          "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz",
-          "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==",
-          "dev": true,
-          "requires": {
-            "@jest/core": "^26.6.3",
-            "@jest/test-result": "^26.6.2",
-            "@jest/types": "^26.6.2",
-            "chalk": "^4.0.0",
-            "exit": "^0.1.2",
-            "graceful-fs": "^4.2.4",
-            "import-local": "^3.0.2",
-            "is-ci": "^2.0.0",
-            "jest-config": "^26.6.3",
-            "jest-util": "^26.6.2",
-            "jest-validate": "^26.6.2",
-            "prompts": "^2.0.1",
-            "yargs": "^15.4.1"
-          }
-        }
-      }
-    },
-    "jest-changed-files": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz",
-      "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "execa": "^4.0.0",
-        "throat": "^5.0.0"
-      },
-      "dependencies": {
-        "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"
-          }
-        },
-        "execa": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
-          "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
-          "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"
-          }
-        },
-        "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"
-          }
-        },
-        "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
-        },
-        "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
-        },
-        "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"
-          }
-        },
-        "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"
-          }
-        },
-        "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
-        },
-        "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
-        },
-        "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"
-          }
-        }
-      }
-    },
-    "jest-config": {
-      "version": "26.6.3",
-      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz",
-      "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.1.0",
-        "@jest/test-sequencer": "^26.6.3",
-        "@jest/types": "^26.6.2",
-        "babel-jest": "^26.6.3",
-        "chalk": "^4.0.0",
-        "deepmerge": "^4.2.2",
-        "glob": "^7.1.1",
-        "graceful-fs": "^4.2.4",
-        "jest-environment-jsdom": "^26.6.2",
-        "jest-environment-node": "^26.6.2",
-        "jest-get-type": "^26.3.0",
-        "jest-jasmine2": "^26.6.3",
-        "jest-regex-util": "^26.0.0",
-        "jest-resolve": "^26.6.2",
-        "jest-util": "^26.6.2",
-        "jest-validate": "^26.6.2",
-        "micromatch": "^4.0.2",
-        "pretty-format": "^26.6.2"
-      },
-      "dependencies": {
-        "deepmerge": {
-          "version": "4.2.2",
-          "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-          "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
-          "dev": true
-        }
-      }
-    },
-    "jest-diff": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
-      "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
-      "dev": true,
-      "requires": {
-        "chalk": "^4.0.0",
-        "diff-sequences": "^26.6.2",
-        "jest-get-type": "^26.3.0",
-        "pretty-format": "^26.6.2"
-      }
-    },
-    "jest-docblock": {
-      "version": "26.0.0",
-      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz",
-      "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==",
-      "dev": true,
-      "requires": {
-        "detect-newline": "^3.0.0"
-      }
-    },
-    "jest-each": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz",
-      "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "chalk": "^4.0.0",
-        "jest-get-type": "^26.3.0",
-        "jest-util": "^26.6.2",
-        "pretty-format": "^26.6.2"
-      }
-    },
-    "jest-environment-jsdom": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
-      "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
-      "dev": true,
-      "requires": {
-        "@jest/environment": "^26.6.2",
-        "@jest/fake-timers": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "@types/node": "*",
-        "jest-mock": "^26.6.2",
-        "jest-util": "^26.6.2",
-        "jsdom": "^16.4.0"
-      }
-    },
-    "jest-environment-node": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz",
-      "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==",
-      "dev": true,
-      "requires": {
-        "@jest/environment": "^26.6.2",
-        "@jest/fake-timers": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "@types/node": "*",
-        "jest-mock": "^26.6.2",
-        "jest-util": "^26.6.2"
-      }
-    },
-    "jest-get-type": {
-      "version": "26.3.0",
-      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
-      "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig=="
-    },
-    "jest-haste-map": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
-      "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "@types/graceful-fs": "^4.1.2",
-        "@types/node": "*",
-        "anymatch": "^3.0.3",
-        "fb-watchman": "^2.0.0",
-        "fsevents": "^2.1.2",
-        "graceful-fs": "^4.2.4",
-        "jest-regex-util": "^26.0.0",
-        "jest-serializer": "^26.6.2",
-        "jest-util": "^26.6.2",
-        "jest-worker": "^26.6.2",
-        "micromatch": "^4.0.2",
-        "sane": "^4.0.3",
-        "walker": "^1.0.7"
-      }
-    },
-    "jest-jasmine2": {
-      "version": "26.6.3",
-      "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz",
-      "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==",
-      "dev": true,
-      "requires": {
-        "@babel/traverse": "^7.1.0",
-        "@jest/environment": "^26.6.2",
-        "@jest/source-map": "^26.6.2",
-        "@jest/test-result": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "co": "^4.6.0",
-        "expect": "^26.6.2",
-        "is-generator-fn": "^2.0.0",
-        "jest-each": "^26.6.2",
-        "jest-matcher-utils": "^26.6.2",
-        "jest-message-util": "^26.6.2",
-        "jest-runtime": "^26.6.3",
-        "jest-snapshot": "^26.6.2",
-        "jest-util": "^26.6.2",
-        "pretty-format": "^26.6.2",
-        "throat": "^5.0.0"
-      }
-    },
-    "jest-leak-detector": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz",
-      "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==",
-      "dev": true,
-      "requires": {
-        "jest-get-type": "^26.3.0",
-        "pretty-format": "^26.6.2"
-      }
-    },
-    "jest-matcher-utils": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
-      "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
-      "dev": true,
-      "requires": {
-        "chalk": "^4.0.0",
-        "jest-diff": "^26.6.2",
-        "jest-get-type": "^26.3.0",
-        "pretty-format": "^26.6.2"
-      }
-    },
-    "jest-message-util": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
-      "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "@jest/types": "^26.6.2",
-        "@types/stack-utils": "^2.0.0",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.4",
-        "micromatch": "^4.0.2",
-        "pretty-format": "^26.6.2",
-        "slash": "^3.0.0",
-        "stack-utils": "^2.0.2"
-      }
-    },
-    "jest-mock": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
-      "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "@types/node": "*"
-      }
-    },
-    "jest-pnp-resolver": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
-      "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
-      "dev": true
-    },
-    "jest-regex-util": {
-      "version": "26.0.0",
-      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
-      "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A=="
-    },
-    "jest-resolve": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz",
-      "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.4",
-        "jest-pnp-resolver": "^1.2.2",
-        "jest-util": "^26.6.2",
-        "read-pkg-up": "^7.0.1",
-        "resolve": "^1.18.1",
-        "slash": "^3.0.0"
-      }
-    },
-    "jest-resolve-dependencies": {
-      "version": "26.6.3",
-      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz",
-      "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "jest-regex-util": "^26.0.0",
-        "jest-snapshot": "^26.6.2"
-      }
-    },
-    "jest-runner": {
-      "version": "26.6.3",
-      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz",
-      "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==",
-      "dev": true,
-      "requires": {
-        "@jest/console": "^26.6.2",
-        "@jest/environment": "^26.6.2",
-        "@jest/test-result": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "emittery": "^0.7.1",
-        "exit": "^0.1.2",
-        "graceful-fs": "^4.2.4",
-        "jest-config": "^26.6.3",
-        "jest-docblock": "^26.0.0",
-        "jest-haste-map": "^26.6.2",
-        "jest-leak-detector": "^26.6.2",
-        "jest-message-util": "^26.6.2",
-        "jest-resolve": "^26.6.2",
-        "jest-runtime": "^26.6.3",
-        "jest-util": "^26.6.2",
-        "jest-worker": "^26.6.2",
-        "source-map-support": "^0.5.6",
-        "throat": "^5.0.0"
-      }
-    },
-    "jest-runtime": {
-      "version": "26.6.3",
-      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz",
-      "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==",
-      "dev": true,
-      "requires": {
-        "@jest/console": "^26.6.2",
-        "@jest/environment": "^26.6.2",
-        "@jest/fake-timers": "^26.6.2",
-        "@jest/globals": "^26.6.2",
-        "@jest/source-map": "^26.6.2",
-        "@jest/test-result": "^26.6.2",
-        "@jest/transform": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "@types/yargs": "^15.0.0",
-        "chalk": "^4.0.0",
-        "cjs-module-lexer": "^0.6.0",
-        "collect-v8-coverage": "^1.0.0",
-        "exit": "^0.1.2",
-        "glob": "^7.1.3",
-        "graceful-fs": "^4.2.4",
-        "jest-config": "^26.6.3",
-        "jest-haste-map": "^26.6.2",
-        "jest-message-util": "^26.6.2",
-        "jest-mock": "^26.6.2",
-        "jest-regex-util": "^26.0.0",
-        "jest-resolve": "^26.6.2",
-        "jest-snapshot": "^26.6.2",
-        "jest-util": "^26.6.2",
-        "jest-validate": "^26.6.2",
-        "slash": "^3.0.0",
-        "strip-bom": "^4.0.0",
-        "yargs": "^15.4.1"
-      }
-    },
-    "jest-serializer": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
-      "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
-      "requires": {
-        "@types/node": "*",
-        "graceful-fs": "^4.2.4"
-      }
-    },
-    "jest-snapshot": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz",
-      "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.0.0",
-        "@jest/types": "^26.6.2",
-        "@types/babel__traverse": "^7.0.4",
-        "@types/prettier": "^2.0.0",
-        "chalk": "^4.0.0",
-        "expect": "^26.6.2",
-        "graceful-fs": "^4.2.4",
-        "jest-diff": "^26.6.2",
-        "jest-get-type": "^26.3.0",
-        "jest-haste-map": "^26.6.2",
-        "jest-matcher-utils": "^26.6.2",
-        "jest-message-util": "^26.6.2",
-        "jest-resolve": "^26.6.2",
-        "natural-compare": "^1.4.0",
-        "pretty-format": "^26.6.2",
-        "semver": "^7.3.2"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
-      }
-    },
-    "jest-util": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
-      "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.4",
-        "is-ci": "^2.0.0",
-        "micromatch": "^4.0.2"
-      }
-    },
-    "jest-validate": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
-      "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "camelcase": "^6.0.0",
-        "chalk": "^4.0.0",
-        "jest-get-type": "^26.3.0",
-        "leven": "^3.1.0",
-        "pretty-format": "^26.6.2"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "6.2.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
-          "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg=="
-        }
-      }
-    },
-    "jest-watcher": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz",
-      "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==",
-      "dev": true,
-      "requires": {
-        "@jest/test-result": "^26.6.2",
-        "@jest/types": "^26.6.2",
-        "@types/node": "*",
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^4.0.0",
-        "jest-util": "^26.6.2",
-        "string-length": "^4.0.1"
-      }
-    },
-    "jest-worker": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
-      "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
-      "requires": {
-        "@types/node": "*",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^7.0.0"
-      }
-    },
-    "jetifier": {
-      "version": "1.6.8",
-      "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz",
-      "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw=="
-    },
-    "joi": {
-      "version": "17.4.0",
-      "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.0.tgz",
-      "integrity": "sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==",
-      "requires": {
-        "@hapi/hoek": "^9.0.0",
-        "@hapi/topo": "^5.0.0",
-        "@sideway/address": "^4.1.0",
-        "@sideway/formula": "^3.0.0",
-        "@sideway/pinpoint": "^2.0.0"
-      }
-    },
-    "js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
-    },
-    "js-yaml": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
-      "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
-    },
-    "jsc-android": {
-      "version": "245459.0.0",
-      "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-245459.0.0.tgz",
-      "integrity": "sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg=="
-    },
-    "jscodeshift": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.11.0.tgz",
-      "integrity": "sha512-SdRK2C7jjs4k/kT2mwtO07KJN9RnjxtKn03d9JVj6c3j9WwaLcFYsICYDnLAzY0hp+wG2nxl+Cm2jWLiNVYb8g==",
-      "requires": {
-        "@babel/core": "^7.1.6",
-        "@babel/parser": "^7.1.6",
-        "@babel/plugin-proposal-class-properties": "^7.1.0",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.1.0",
-        "@babel/plugin-proposal-optional-chaining": "^7.1.0",
-        "@babel/plugin-transform-modules-commonjs": "^7.1.0",
-        "@babel/preset-flow": "^7.0.0",
-        "@babel/preset-typescript": "^7.1.0",
-        "@babel/register": "^7.0.0",
-        "babel-core": "^7.0.0-bridge.0",
-        "colors": "^1.1.2",
-        "flow-parser": "0.*",
-        "graceful-fs": "^4.2.4",
-        "micromatch": "^3.1.10",
-        "neo-async": "^2.5.0",
-        "node-dir": "^0.1.17",
-        "recast": "^0.20.3",
-        "temp": "^0.8.1",
-        "write-file-atomic": "^2.3.0"
-      },
-      "dependencies": {
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.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=",
-              "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=",
-          "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=",
-              "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=",
-          "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=",
-              "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==",
-          "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=",
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
-      }
-    },
-    "jsdom": {
-      "version": "16.5.3",
-      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.3.tgz",
-      "integrity": "sha512-Qj1H+PEvUsOtdPJ056ewXM4UJPCi4hhLA8wpiz9F2YvsRBhuFsXxtrIFAgGBDynQA9isAMGE91PfUYbdMPXuTA==",
-      "dev": true,
-      "requires": {
-        "abab": "^2.0.5",
-        "acorn": "^8.1.0",
-        "acorn-globals": "^6.0.0",
-        "cssom": "^0.4.4",
-        "cssstyle": "^2.3.0",
-        "data-urls": "^2.0.0",
-        "decimal.js": "^10.2.1",
-        "domexception": "^2.0.1",
-        "escodegen": "^2.0.0",
-        "html-encoding-sniffer": "^2.0.1",
-        "is-potential-custom-element-name": "^1.0.0",
-        "nwsapi": "^2.2.0",
-        "parse5": "6.0.1",
-        "request": "^2.88.2",
-        "request-promise-native": "^1.0.9",
-        "saxes": "^5.0.1",
-        "symbol-tree": "^3.2.4",
-        "tough-cookie": "^4.0.0",
-        "w3c-hr-time": "^1.0.2",
-        "w3c-xmlserializer": "^2.0.0",
-        "webidl-conversions": "^6.1.0",
-        "whatwg-encoding": "^1.0.5",
-        "whatwg-mimetype": "^2.3.0",
-        "whatwg-url": "^8.5.0",
-        "ws": "^7.4.4",
-        "xml-name-validator": "^3.0.0"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "8.2.4",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz",
-          "integrity": "sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==",
-          "dev": true
-        },
-        "ws": {
-          "version": "7.4.5",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz",
-          "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==",
-          "dev": true
-        }
-      }
-    },
-    "jsesc": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
-      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
-    },
-    "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=="
-    },
-    "json-parse-even-better-errors": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-      "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-stable-stringify-without-jsonify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
-      "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": "2.2.0",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
-      "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
-      "requires": {
-        "minimist": "^1.2.5"
-      }
-    },
-    "jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "requires": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "jsonify": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
-      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
-    },
-    "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"
-      }
-    },
-    "jsx-ast-utils": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz",
-      "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==",
-      "dev": true,
-      "requires": {
-        "array-includes": "^3.1.2",
-        "object.assign": "^4.1.2"
-      }
-    },
-    "keymirror": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/keymirror/-/keymirror-0.1.1.tgz",
-      "integrity": "sha1-kYiJ6hP40KQufFVyUO7nE63JXDU="
-    },
-    "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=="
-    },
-    "klaw": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
-      "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
-      "requires": {
-        "graceful-fs": "^4.1.9"
-      }
-    },
-    "kleur": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
-      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
-    },
-    "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=="
-    },
-    "levn": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
-      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "^1.2.1",
-        "type-check": "~0.4.0"
-      }
-    },
-    "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
-    },
-    "locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "requires": {
-        "p-locate": "^4.1.0"
-      }
-    },
-    "lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
-    },
-    "lodash._reinterpolate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
-      "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
-    },
-    "lodash.debounce": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
-    },
-    "lodash.frompairs": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/lodash.frompairs/-/lodash.frompairs-4.0.1.tgz",
-      "integrity": "sha1-vE5SB/onV8E25XNhTpZkUGsrG9I="
-    },
-    "lodash.isequal": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
-      "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
-    },
-    "lodash.isstring": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
-      "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
-    },
-    "lodash.omit": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
-      "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA="
-    },
-    "lodash.pick": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
-      "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM="
-    },
-    "lodash.template": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
-      "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
-      "requires": {
-        "lodash._reinterpolate": "^3.0.0",
-        "lodash.templatesettings": "^4.0.0"
-      }
-    },
-    "lodash.templatesettings": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
-      "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
-      "requires": {
-        "lodash._reinterpolate": "^3.0.0"
-      }
-    },
-    "lodash.throttle": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
-      "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
-    },
-    "log-symbols": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
-      "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
-      "requires": {
-        "chalk": "^2.0.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-          "requires": {
-            "color-convert": "^1.9.0"
-          }
-        },
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.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==",
-          "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="
-        },
-        "has-flag": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
-        },
-        "supports-color": {
-          "version": "5.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "logkitty": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz",
-      "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==",
-      "requires": {
-        "ansi-fragments": "^0.2.1",
-        "dayjs": "^1.8.15",
-        "yargs": "^15.1.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==",
-      "requires": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      }
-    },
-    "lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
-      "requires": {
-        "yallist": "^4.0.0"
-      }
-    },
-    "make-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-      "requires": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-        }
-      }
-    },
-    "makeerror": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
-      "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
-      "requires": {
-        "tmpl": "1.0.x"
-      }
-    },
-    "map-cache": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
-    },
-    "map-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
-      "requires": {
-        "object-visit": "^1.0.0"
-      }
-    },
-    "mdn-data": {
-      "version": "2.0.14",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-      "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
-    },
-    "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=="
-    },
-    "metro": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro/-/metro-0.64.0.tgz",
-      "integrity": "sha512-G2OC08Rzfs0kqnSEuKo2yZxR+/eNUpA93Ru45c60uN0Dw3HPrDi+ZBipgFftC6iLE0l+6hu8roFFIofotWxybw==",
-      "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "@babel/core": "^7.0.0",
-        "@babel/generator": "^7.5.0",
-        "@babel/parser": "^7.0.0",
-        "@babel/template": "^7.0.0",
-        "@babel/traverse": "^7.0.0",
-        "@babel/types": "^7.0.0",
-        "absolute-path": "^0.0.0",
-        "accepts": "^1.3.7",
-        "async": "^2.4.0",
-        "chalk": "^4.0.0",
-        "ci-info": "^2.0.0",
-        "connect": "^3.6.5",
-        "debug": "^2.2.0",
-        "denodeify": "^1.2.1",
-        "error-stack-parser": "^2.0.6",
-        "fs-extra": "^1.0.0",
-        "graceful-fs": "^4.1.3",
-        "image-size": "^0.6.0",
-        "invariant": "^2.2.4",
-        "jest-haste-map": "^26.5.2",
-        "jest-worker": "^26.0.0",
-        "lodash.throttle": "^4.1.1",
-        "metro-babel-register": "0.64.0",
-        "metro-babel-transformer": "0.64.0",
-        "metro-cache": "0.64.0",
-        "metro-cache-key": "0.64.0",
-        "metro-config": "0.64.0",
-        "metro-core": "0.64.0",
-        "metro-hermes-compiler": "0.64.0",
-        "metro-inspector-proxy": "0.64.0",
-        "metro-minify-uglify": "0.64.0",
-        "metro-react-native-babel-preset": "0.64.0",
-        "metro-resolver": "0.64.0",
-        "metro-runtime": "0.64.0",
-        "metro-source-map": "0.64.0",
-        "metro-symbolicate": "0.64.0",
-        "metro-transform-plugins": "0.64.0",
-        "metro-transform-worker": "0.64.0",
-        "mime-types": "^2.1.27",
-        "mkdirp": "^0.5.1",
-        "node-fetch": "^2.2.0",
-        "nullthrows": "^1.1.1",
-        "rimraf": "^2.5.4",
-        "serialize-error": "^2.1.0",
-        "source-map": "^0.5.6",
-        "strip-ansi": "^6.0.0",
-        "temp": "0.8.3",
-        "throat": "^5.0.0",
-        "ws": "^1.1.5",
-        "yargs": "^15.3.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
-        },
-        "fs-extra": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
-          "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "jsonfile": "^2.1.0",
-            "klaw": "^1.0.0"
-          }
-        },
-        "jsonfile": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
-          "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
-          "requires": {
-            "graceful-fs": "^4.1.6"
-          }
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        },
-        "ws": {
-          "version": "1.1.5",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
-          "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
-          "requires": {
-            "options": ">=0.0.5",
-            "ultron": "1.0.x"
-          }
-        }
-      }
-    },
-    "metro-babel-register": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.64.0.tgz",
-      "integrity": "sha512-Kf6YvE3kIRumGnjK0Q9LqGDIdnsX9eFGtNBmBuCVDuB9wGGA/5CgX8We8W7Y44dz1RGTcHJRhfw5iGg+pwC3aQ==",
-      "requires": {
-        "@babel/core": "^7.0.0",
-        "@babel/plugin-proposal-class-properties": "^7.0.0",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
-        "@babel/plugin-proposal-optional-chaining": "^7.0.0",
-        "@babel/plugin-transform-flow-strip-types": "^7.0.0",
-        "@babel/plugin-transform-modules-commonjs": "^7.0.0",
-        "@babel/register": "^7.0.0",
-        "escape-string-regexp": "^1.0.5"
-      }
-    },
-    "metro-babel-transformer": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.64.0.tgz",
-      "integrity": "sha512-itZaxKTgmKGEZWxNzbSZBc22NngrMZzoUNuU92aHSTGkYi2WH4XlvzEHsstmIKHMsRVKl75cA+mNmgk4gBFJKw==",
-      "requires": {
-        "@babel/core": "^7.0.0",
-        "metro-source-map": "0.64.0",
-        "nullthrows": "^1.1.1"
-      }
-    },
-    "metro-cache": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.64.0.tgz",
-      "integrity": "sha512-QvGfxe/1QQYM9XOlR8W1xqE9eHDw/AgJIgYGn/TxZxBu9Zga+Rgs1omeSZju45D8w5VWgMr83ma5kACgzvOecg==",
-      "requires": {
-        "metro-core": "0.64.0",
-        "mkdirp": "^0.5.1",
-        "rimraf": "^2.5.4"
-      }
-    },
-    "metro-cache-key": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.64.0.tgz",
-      "integrity": "sha512-O9B65G8L/fopck45ZhdRosyVZdMtUQuX5mBWEC1NRj02iWBIUPLmYMjrunqIe8vHipCMp3DtTCm/65IlBmO8jg=="
-    },
-    "metro-config": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.64.0.tgz",
-      "integrity": "sha512-QhM4asnX5KhlRWaugwVGNNXhX0Z85u5nK0UQ/A90bBb4xWyXqUe20e788VtdA75rkQiiI6wXTCIHWT0afbnjwQ==",
-      "requires": {
-        "cosmiconfig": "^5.0.5",
-        "jest-validate": "^26.5.2",
-        "metro": "0.64.0",
-        "metro-cache": "0.64.0",
-        "metro-core": "0.64.0",
-        "metro-runtime": "0.64.0"
-      }
-    },
-    "metro-core": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.64.0.tgz",
-      "integrity": "sha512-v8ZQ5j72EaUwamQ8pLfHlOHTyp7SbdazvHPzFGDpHnwIQqIT0Bw3Syg8R4regTlVG3ngpeSEAi005UITljmMcQ==",
-      "requires": {
-        "jest-haste-map": "^26.5.2",
-        "lodash.throttle": "^4.1.1",
-        "metro-resolver": "0.64.0"
-      }
-    },
-    "metro-hermes-compiler": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.64.0.tgz",
-      "integrity": "sha512-CLAjVDWGAoGhbi2ZyPHnH5YDdfrDIx6+tzFWfHGIMTZkYBXsYta9IfYXBV8lFb6BIbrXLjlXZAOoosknetMPOA=="
-    },
-    "metro-inspector-proxy": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.64.0.tgz",
-      "integrity": "sha512-KywbH3GNSz9Iqw4UH3smgaV2dBHHYMISeN7ORntDL/G+xfgPc6vt13d+zFb907YpUcXj5N0vdoiAHI5V/0y8IA==",
-      "requires": {
-        "connect": "^3.6.5",
-        "debug": "^2.2.0",
-        "ws": "^1.1.5",
-        "yargs": "^15.3.1"
-      },
-      "dependencies": {
-        "ws": {
-          "version": "1.1.5",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
-          "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
-          "requires": {
-            "options": ">=0.0.5",
-            "ultron": "1.0.x"
-          }
-        }
-      }
-    },
-    "metro-minify-uglify": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.64.0.tgz",
-      "integrity": "sha512-DRwRstqXR5qfte9Nuwoov5dRXxL7fJeVlO5fGyOajWeO3+AgPjvjXh/UcLJqftkMWTPGUFuzAD5/7JC5v5FLWw==",
-      "requires": {
-        "uglify-es": "^3.1.9"
-      }
-    },
-    "metro-react-native-babel-preset": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.64.0.tgz",
-      "integrity": "sha512-HcZ0RWQRuJfpPiaHyFQJzcym+/dDIVUPwUAXWoub/C4GkGu+mPjp8vqK6g0FxokCnnI2TK0gZTza2IDfiNNscQ==",
-      "requires": {
-        "@babel/core": "^7.0.0",
-        "@babel/plugin-proposal-class-properties": "^7.0.0",
-        "@babel/plugin-proposal-export-default-from": "^7.0.0",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
-        "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
-        "@babel/plugin-proposal-optional-chaining": "^7.0.0",
-        "@babel/plugin-syntax-dynamic-import": "^7.0.0",
-        "@babel/plugin-syntax-export-default-from": "^7.0.0",
-        "@babel/plugin-syntax-flow": "^7.2.0",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
-        "@babel/plugin-syntax-optional-chaining": "^7.0.0",
-        "@babel/plugin-transform-arrow-functions": "^7.0.0",
-        "@babel/plugin-transform-block-scoping": "^7.0.0",
-        "@babel/plugin-transform-classes": "^7.0.0",
-        "@babel/plugin-transform-computed-properties": "^7.0.0",
-        "@babel/plugin-transform-destructuring": "^7.0.0",
-        "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
-        "@babel/plugin-transform-flow-strip-types": "^7.0.0",
-        "@babel/plugin-transform-for-of": "^7.0.0",
-        "@babel/plugin-transform-function-name": "^7.0.0",
-        "@babel/plugin-transform-literals": "^7.0.0",
-        "@babel/plugin-transform-modules-commonjs": "^7.0.0",
-        "@babel/plugin-transform-object-assign": "^7.0.0",
-        "@babel/plugin-transform-parameters": "^7.0.0",
-        "@babel/plugin-transform-react-display-name": "^7.0.0",
-        "@babel/plugin-transform-react-jsx": "^7.0.0",
-        "@babel/plugin-transform-react-jsx-self": "^7.0.0",
-        "@babel/plugin-transform-react-jsx-source": "^7.0.0",
-        "@babel/plugin-transform-regenerator": "^7.0.0",
-        "@babel/plugin-transform-runtime": "^7.0.0",
-        "@babel/plugin-transform-shorthand-properties": "^7.0.0",
-        "@babel/plugin-transform-spread": "^7.0.0",
-        "@babel/plugin-transform-sticky-regex": "^7.0.0",
-        "@babel/plugin-transform-template-literals": "^7.0.0",
-        "@babel/plugin-transform-typescript": "^7.5.0",
-        "@babel/plugin-transform-unicode-regex": "^7.0.0",
-        "@babel/template": "^7.0.0",
-        "react-refresh": "^0.4.0"
-      }
-    },
-    "metro-react-native-babel-transformer": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.64.0.tgz",
-      "integrity": "sha512-K1sHO3ODBFCr7uEiCQ4RvVr+cQg0EHQF8ChVPnecGh/WDD8udrTq9ECwB0dRfMjAvlsHtRUlJm6ZSI8UPgum2w==",
-      "requires": {
-        "@babel/core": "^7.0.0",
-        "babel-preset-fbjs": "^3.3.0",
-        "metro-babel-transformer": "0.64.0",
-        "metro-react-native-babel-preset": "0.64.0",
-        "metro-source-map": "0.64.0",
-        "nullthrows": "^1.1.1"
-      }
-    },
-    "metro-resolver": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.64.0.tgz",
-      "integrity": "sha512-cJ26Id8Zf+HmS/1vFwu71K3u7ep/+HeXXAJIeVDYf+niE7AWB9FijyMtAlQgbD8elWqv1leJCnQ/xHRFBfGKYA==",
-      "requires": {
-        "absolute-path": "^0.0.0"
-      }
-    },
-    "metro-runtime": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.64.0.tgz",
-      "integrity": "sha512-m7XbWOaIOeFX7YcxUhmnOi6Pg8EaeL89xyZ+quZyZVF1aNoTr4w8FfbKxvijpjsytKHIZtd+43m2Wt5JrqyQmQ=="
-    },
-    "metro-source-map": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.64.0.tgz",
-      "integrity": "sha512-OCG2rtcp5cLEGYvAbfkl6mEc0J2FPRP4/UCEly+juBk7hawS9bCBMBfhJm/HIsvY1frk6nT2Vsl1O8YBbwyx2g==",
-      "requires": {
-        "@babel/traverse": "^7.0.0",
-        "@babel/types": "^7.0.0",
-        "invariant": "^2.2.4",
-        "metro-symbolicate": "0.64.0",
-        "nullthrows": "^1.1.1",
-        "ob1": "0.64.0",
-        "source-map": "^0.5.6",
-        "vlq": "^1.0.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
-        }
-      }
-    },
-    "metro-symbolicate": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.64.0.tgz",
-      "integrity": "sha512-qIi+YRrDWnLVmydj6gwidYLPaBsakZRibGWSspuXgHAxOI3UuLwlo4dpQ73Et0gyHjI7ZvRMRY8JPiOntf9AQQ==",
-      "requires": {
-        "invariant": "^2.2.4",
-        "metro-source-map": "0.64.0",
-        "nullthrows": "^1.1.1",
-        "source-map": "^0.5.6",
-        "through2": "^2.0.1",
-        "vlq": "^1.0.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
-        }
-      }
-    },
-    "metro-transform-plugins": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.64.0.tgz",
-      "integrity": "sha512-iTIRBD/wBI98plfxj8jAoNUUXfXLNlyvcjPtshhpGvdwu9pzQilGfnDnOaaK+vbITcOk9w5oQectXyJwAqTr1A==",
-      "requires": {
-        "@babel/core": "^7.0.0",
-        "@babel/generator": "^7.5.0",
-        "@babel/template": "^7.0.0",
-        "@babel/traverse": "^7.0.0",
-        "nullthrows": "^1.1.1"
-      }
-    },
-    "metro-transform-worker": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.64.0.tgz",
-      "integrity": "sha512-wegRtK8GyLF6IPZRBJp+zsORgA4iX0h1DRpknyAMDCtSbJ4VU2xV/AojteOgAsDvY3ucAGsvfuZLNDJHUdUNHQ==",
-      "requires": {
-        "@babel/core": "^7.0.0",
-        "@babel/generator": "^7.5.0",
-        "@babel/parser": "^7.0.0",
-        "@babel/types": "^7.0.0",
-        "babel-preset-fbjs": "^3.3.0",
-        "metro": "0.64.0",
-        "metro-babel-transformer": "0.64.0",
-        "metro-cache": "0.64.0",
-        "metro-cache-key": "0.64.0",
-        "metro-hermes-compiler": "0.64.0",
-        "metro-source-map": "0.64.0",
-        "metro-transform-plugins": "0.64.0",
-        "nullthrows": "^1.1.1"
-      }
-    },
-    "micromatch": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
-      "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
-      "requires": {
-        "braces": "^3.0.1",
-        "picomatch": "^2.2.3"
-      }
-    },
-    "mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
-    },
-    "mime-db": {
-      "version": "1.47.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz",
-      "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw=="
-    },
-    "mime-types": {
-      "version": "2.1.30",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz",
-      "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==",
-      "requires": {
-        "mime-db": "1.47.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=="
-    },
-    "minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "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=="
-    },
-    "mixin-deep": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-      "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==",
-          "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==",
-      "requires": {
-        "minimist": "^1.2.5"
-      }
-    },
-    "mockdate": {
-      "version": "3.0.5",
-      "resolved": "https://registry.npmjs.org/mockdate/-/mockdate-3.0.5.tgz",
-      "integrity": "sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ=="
-    },
-    "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=="
-    },
-    "nanoid": {
-      "version": "3.1.23",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz",
-      "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw=="
-    },
-    "nanomatch": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "fragment-cache": "^0.2.1",
-        "is-windows": "^1.0.2",
-        "kind-of": "^6.0.2",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      }
-    },
-    "natural-compare": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
-      "dev": true
-    },
-    "negotiator": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
-      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
-    },
-    "neo-async": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
-      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
-    },
-    "nice-try": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
-    },
-    "nocache": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz",
-      "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q=="
-    },
-    "node-dir": {
-      "version": "0.1.17",
-      "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
-      "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=",
-      "requires": {
-        "minimatch": "^3.0.2"
-      }
-    },
-    "node-fetch": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
-      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
-    },
-    "node-int64": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
-      "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs="
-    },
-    "node-modules-regexp": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
-      "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA="
-    },
-    "node-notifier": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz",
-      "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "growly": "^1.3.0",
-        "is-wsl": "^2.2.0",
-        "semver": "^7.3.2",
-        "shellwords": "^0.1.1",
-        "uuid": "^8.3.0",
-        "which": "^2.0.2"
-      },
-      "dependencies": {
-        "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,
-          "optional": true,
-          "requires": {
-            "is-docker": "^2.0.0"
-          }
-        },
-        "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "uuid": {
-          "version": "8.3.2",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-          "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-          "dev": true,
-          "optional": true
-        },
-        "which": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
-      }
-    },
-    "node-releases": {
-      "version": "1.1.72",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz",
-      "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw=="
-    },
-    "node-stream-zip": {
-      "version": "1.13.4",
-      "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.13.4.tgz",
-      "integrity": "sha512-M2nPvnSWFFH+fgLIRZDqmhshmuzXcr+ce9BsHQX/30pXR+cEz/USMYmx9ZAFYy837W2QoDoNzhFtbZhfzaMk9A=="
-    },
-    "normalize-package-data": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-      "dev": true,
-      "requires": {
-        "hosted-git-info": "^2.1.4",
-        "resolve": "^1.10.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "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=="
-    },
-    "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=",
-      "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==",
-      "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=="
-    },
-    "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
-    },
-    "ob1": {
-      "version": "0.64.0",
-      "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.64.0.tgz",
-      "integrity": "sha512-CO1N+5dhvy+MoAwxz8+fymEUcwsT4a+wHhrHFb02LppcJdHxgcBWviwEhUwKOD2kLMQ7ijrrzybOqpGcqEtvpQ=="
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
-    },
-    "object-copy": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
-      "requires": {
-        "copy-descriptor": "^0.1.0",
-        "define-property": "^0.2.5",
-        "kind-of": "^3.0.3"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "object-inspect": {
-      "version": "1.10.3",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz",
-      "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==",
-      "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=="
-    },
-    "object-visit": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
-      "requires": {
-        "isobject": "^3.0.0"
-      }
-    },
-    "object.assign": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
-      "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
-      "requires": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "has-symbols": "^1.0.1",
-        "object-keys": "^1.1.1"
-      }
-    },
-    "object.entries": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz",
-      "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.1",
-        "has": "^1.0.3"
-      }
-    },
-    "object.fromentries": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz",
-      "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.2",
-        "has": "^1.0.3"
-      }
-    },
-    "object.pick": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "object.values": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz",
-      "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.2",
-        "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=",
-      "requires": {
-        "ee-first": "1.1.1"
-      }
-    },
-    "on-headers": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "onetime": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-      "requires": {
-        "mimic-fn": "^1.0.0"
-      }
-    },
-    "open": {
-      "version": "6.4.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
-      "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
-      "requires": {
-        "is-wsl": "^1.1.0"
-      }
-    },
-    "optionator": {
-      "version": "0.9.1",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
-      "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
-      "dev": true,
-      "requires": {
-        "deep-is": "^0.1.3",
-        "fast-levenshtein": "^2.0.6",
-        "levn": "^0.4.1",
-        "prelude-ls": "^1.2.1",
-        "type-check": "^0.4.0",
-        "word-wrap": "^1.2.3"
-      }
-    },
-    "options": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
-      "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8="
-    },
-    "ora": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
-      "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
-      "requires": {
-        "chalk": "^2.4.2",
-        "cli-cursor": "^2.1.0",
-        "cli-spinners": "^2.0.0",
-        "log-symbols": "^2.2.0",
-        "strip-ansi": "^5.2.0",
-        "wcwidth": "^1.0.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-          "requires": {
-            "color-convert": "^1.9.0"
-          }
-        },
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.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==",
-          "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="
-        },
-        "has-flag": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
-        },
-        "supports-color": {
-          "version": "5.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "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="
-    },
-    "p-each-series": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
-      "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==",
-      "dev": true
-    },
-    "p-finally": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
-    },
-    "p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "requires": {
-        "p-try": "^2.0.0"
-      }
-    },
-    "p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "requires": {
-        "p-limit": "^2.2.0"
-      }
-    },
-    "p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-    },
-    "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-json": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
-      "requires": {
-        "error-ex": "^1.3.1",
-        "json-parse-better-errors": "^1.0.1"
-      }
-    },
-    "parse5": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
-      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
-      "dev": true
-    },
-    "parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
-    },
-    "pascalcase": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
-    },
-    "path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
-    },
-    "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="
-    },
-    "path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
-    },
-    "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=="
-    },
-    "paths-js": {
-      "version": "0.4.11",
-      "resolved": "https://registry.npmjs.org/paths-js/-/paths-js-0.4.11.tgz",
-      "integrity": "sha512-3mqcLomDBXOo7Fo+UlaenG6f71bk1ZezPQy2JCmYHy2W2k5VKpP+Jbin9H0bjXynelTbglCqdFhSEkeIkKTYUA=="
-    },
-    "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.3",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
-      "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg=="
-    },
-    "pify": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
-    },
-    "pirates": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
-      "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
-      "requires": {
-        "node-modules-regexp": "^1.0.0"
-      }
-    },
-    "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==",
-      "requires": {
-        "find-up": "^3.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==",
-          "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==",
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.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==",
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
-        }
-      }
-    },
-    "plist": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz",
-      "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==",
-      "requires": {
-        "base64-js": "^1.5.1",
-        "xmlbuilder": "^9.0.7",
-        "xmldom": "^0.5.0"
-      }
-    },
-    "point-in-polygon": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz",
-      "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw=="
-    },
-    "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="
-    },
-    "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=="
-    },
-    "prelude-ls": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
-      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
-      "dev": true
-    },
-    "prettier": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz",
-      "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==",
-      "dev": true
-    },
-    "prettier-linter-helpers": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
-      "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
-      "dev": true,
-      "requires": {
-        "fast-diff": "^1.1.2"
-      }
-    },
-    "pretty-format": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
-      "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
-      "requires": {
-        "@jest/types": "^26.6.2",
-        "ansi-regex": "^5.0.0",
-        "ansi-styles": "^4.0.0",
-        "react-is": "^17.0.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
-        }
-      }
-    },
-    "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=="
-    },
-    "progress": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
-      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
-      "dev": true
-    },
-    "promise": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
-      "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==",
-      "requires": {
-        "asap": "~2.0.6"
-      }
-    },
-    "prompts": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz",
-      "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==",
-      "requires": {
-        "kleur": "^3.0.3",
-        "sisteransi": "^1.0.5"
-      }
-    },
-    "prop-types": {
-      "version": "15.7.2",
-      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
-      "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
-      "requires": {
-        "loose-envify": "^1.4.0",
-        "object-assign": "^4.1.1",
-        "react-is": "^16.8.1"
-      },
-      "dependencies": {
-        "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=="
-        }
-      }
-    },
-    "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
-    },
-    "pump": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-      "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
-    },
-    "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
-    },
-    "query-string": {
-      "version": "6.14.1",
-      "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz",
-      "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==",
-      "requires": {
-        "decode-uri-component": "^0.2.0",
-        "filter-obj": "^1.1.0",
-        "split-on-first": "^1.0.0",
-        "strict-uri-encode": "^2.0.0"
-      }
-    },
-    "ramda": {
-      "version": "0.27.1",
-      "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz",
-      "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw=="
-    },
-    "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=="
-    },
-    "react": {
-      "version": "17.0.1",
-      "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz",
-      "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==",
-      "requires": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "react-devtools-core": {
-      "version": "4.13.2",
-      "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.13.2.tgz",
-      "integrity": "sha512-/lA5FVLMhUHrkQwtEf5wZNCKsXmc2RBZMNS/kkq3WlXPg2Y7COUGMh0Lmz34jjMpM0kvLMDuj+DqsPT/jSADbw==",
-      "requires": {
-        "shell-quote": "^1.6.1",
-        "ws": "^7"
-      },
-      "dependencies": {
-        "ws": {
-          "version": "7.4.5",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz",
-          "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g=="
-        }
-      }
-    },
-    "react-is": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
-      "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
-    },
-    "react-native": {
-      "version": "0.64.1",
-      "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.64.1.tgz",
-      "integrity": "sha512-jvSj+hNAfwvhaSmxd5KHJ5HidtG0pDXzoH6DaqNpU74g3CmAiA8vuk58B5yx/DYuffGq6PeMniAcwuh3Xp4biQ==",
-      "requires": {
-        "@jest/create-cache-key-function": "^26.5.0",
-        "@react-native-community/cli": "^5.0.1-alpha.0",
-        "@react-native-community/cli-platform-android": "^5.0.1-alpha.0",
-        "@react-native-community/cli-platform-ios": "^5.0.1-alpha.0",
-        "@react-native/assets": "1.0.0",
-        "@react-native/normalize-color": "1.0.0",
-        "@react-native/polyfills": "1.0.0",
-        "abort-controller": "^3.0.0",
-        "anser": "^1.4.9",
-        "base64-js": "^1.1.2",
-        "event-target-shim": "^5.0.1",
-        "hermes-engine": "~0.7.0",
-        "invariant": "^2.2.4",
-        "jsc-android": "^245459.0.0",
-        "metro-babel-register": "0.64.0",
-        "metro-react-native-babel-transformer": "0.64.0",
-        "metro-runtime": "0.64.0",
-        "metro-source-map": "0.64.0",
-        "nullthrows": "^1.1.1",
-        "pretty-format": "^26.5.2",
-        "promise": "^8.0.3",
-        "prop-types": "^15.7.2",
-        "react-devtools-core": "^4.6.0",
-        "react-native-codegen": "^0.0.6",
-        "react-refresh": "^0.4.0",
-        "regenerator-runtime": "^0.13.2",
-        "scheduler": "^0.20.1",
-        "shelljs": "^0.8.4",
-        "stacktrace-parser": "^0.1.3",
-        "use-subscription": "^1.0.0",
-        "whatwg-fetch": "^3.0.0",
-        "ws": "^6.1.4"
-      },
-      "dependencies": {
-        "@react-native-community/cli": {
-          "version": "5.0.1-alpha.2",
-          "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-5.0.1-alpha.2.tgz",
-          "integrity": "sha512-PP22TVV2VyELXhAX4PcBisasssastSEx23XDklfPoCPIXD2QgGC7y39n/b5I9tOzKi2qYswCEAcDpwXYwevGOg==",
-          "requires": {
-            "@react-native-community/cli-debugger-ui": "^5.0.1-alpha.1",
-            "@react-native-community/cli-hermes": "^5.0.1-alpha.1",
-            "@react-native-community/cli-server-api": "^5.0.1-alpha.2",
-            "@react-native-community/cli-tools": "^5.0.1-alpha.1",
-            "@react-native-community/cli-types": "^5.0.1-alpha.1",
-            "appdirsjs": "^1.2.4",
-            "chalk": "^3.0.0",
-            "command-exists": "^1.2.8",
-            "commander": "^2.19.0",
-            "cosmiconfig": "^5.1.0",
-            "deepmerge": "^3.2.0",
-            "envinfo": "^7.7.2",
-            "execa": "^1.0.0",
-            "find-up": "^4.1.0",
-            "fs-extra": "^8.1.0",
-            "glob": "^7.1.3",
-            "graceful-fs": "^4.1.3",
-            "joi": "^17.2.1",
-            "leven": "^3.1.0",
-            "lodash": "^4.17.15",
-            "metro": "^0.64.0",
-            "metro-config": "^0.64.0",
-            "metro-core": "^0.64.0",
-            "metro-react-native-babel-transformer": "^0.64.0",
-            "metro-resolver": "^0.64.0",
-            "metro-runtime": "^0.64.0",
-            "minimist": "^1.2.0",
-            "mkdirp": "^0.5.1",
-            "node-stream-zip": "^1.9.1",
-            "ora": "^3.4.0",
-            "pretty-format": "^26.6.2",
-            "prompts": "^2.4.0",
-            "semver": "^6.3.0",
-            "serve-static": "^1.13.1",
-            "strip-ansi": "^5.2.0",
-            "sudo-prompt": "^9.0.0",
-            "wcwidth": "^1.0.1"
-          }
-        },
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        }
-      }
-    },
-    "react-native-animatable": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/react-native-animatable/-/react-native-animatable-1.3.3.tgz",
-      "integrity": "sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==",
-      "requires": {
-        "prop-types": "^15.7.2"
-      }
-    },
-    "react-native-chart-kit": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/react-native-chart-kit/-/react-native-chart-kit-6.11.0.tgz",
-      "integrity": "sha512-mRSfW+mcyVSi0UZKFucru5h5TPB6UcWrMi/DphICRpPJWlvIVAv/6VYGFA57NFDLoRVufFjbsRRrms+TOq61jw==",
-      "requires": {
-        "lodash": "^4.17.13",
-        "paths-js": "^0.4.10",
-        "point-in-polygon": "^1.0.1"
-      }
-    },
-    "react-native-codegen": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.0.6.tgz",
-      "integrity": "sha512-cMvrUelD81wiPitEPiwE/TCNscIVauXxmt4NTGcy18HrUd0WRWXfYzAQGXm0eI87u3NMudNhqFj2NISJenxQHg==",
-      "requires": {
-        "flow-parser": "^0.121.0",
-        "jscodeshift": "^0.11.0",
-        "nullthrows": "^1.1.1"
-      }
-    },
-    "react-native-gesture-handler": {
-      "version": "1.10.3",
-      "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.10.3.tgz",
-      "integrity": "sha512-cBGMi1IEsIVMgoox4RvMx7V2r6bNKw0uR1Mu1o7NbuHS6BRSVLq0dP34l2ecnPlC+jpWd3le6Yg1nrdCjby2Mw==",
-      "requires": {
-        "@egjs/hammerjs": "^2.0.17",
-        "fbjs": "^3.0.0",
-        "hoist-non-react-statics": "^3.3.0",
-        "invariant": "^2.2.4",
-        "prop-types": "^15.7.2"
-      }
-    },
-    "react-native-image-picker": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/react-native-image-picker/-/react-native-image-picker-4.0.6.tgz",
-      "integrity": "sha512-Pp3UWKUADuMG1mz12m6dSO/R2KnvXVEd77bldrfTMFpz4PFc4iVKo+bHeS79It0mUBezfzDMgfesg/OPLSugvQ=="
-    },
-    "react-native-iphone-x-helper": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz",
-      "integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg=="
-    },
-    "react-native-modal": {
-      "version": "12.0.2",
-      "resolved": "https://registry.npmjs.org/react-native-modal/-/react-native-modal-12.0.2.tgz",
-      "integrity": "sha512-UAQIqB3sg9b4LaQT3GY0JUtnXDonCzGv61JFQl9DZIBPgxrqoKmGtUcjBERu+xnBYJGogFFMyswQ8vLgAvh17w==",
-      "requires": {
-        "prop-types": "^15.6.2",
-        "react-native-animatable": "1.3.3"
-      }
-    },
-    "react-native-orientation-locker": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/react-native-orientation-locker/-/react-native-orientation-locker-1.3.1.tgz",
-      "integrity": "sha512-BJPe/GvGO8nNdtqQat30CS9H2o+Qt8hv9AMYCxLS5l5k5+BP3FLScU2+GBg2DizDQCOnTtA24o8heI7kwy+rvw=="
-    },
-    "react-native-reanimated": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.2.0.tgz",
-      "integrity": "sha512-lOJDd+5w1gY6DHGXG2jD1dsjzQmXQ2699HUc3IztvI2WP4zUT+UAA+zSG+5JiBS5DUnTL8YhhkmUQmr1KNGO5w==",
-      "requires": {
-        "@babel/plugin-transform-object-assign": "^7.10.4",
-        "fbjs": "^3.0.0",
-        "mockdate": "^3.0.2",
-        "string-hash-64": "^1.0.3"
-      }
-    },
-    "react-native-render-html": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/react-native-render-html/-/react-native-render-html-6.0.4.tgz",
-      "integrity": "sha512-JEp+ljOWmVtG3f8IWsfA1GRUxm5EJOOdPYcaHqLQpLjZtt/NKdyLL3OtBlWYP6kPU5hKHyl1hG37bwQlO07Fqw==",
-      "requires": {
-        "@jsamr/counter-style": "^2.0.1",
-        "@jsamr/react-native-li": "^2.2.1",
-        "@native-html/transient-render-engine": "^9.2.2",
-        "@types/ramda": "^0.27.40",
-        "@types/urijs": "^1.19.15",
-        "prop-types": "^15.5.7",
-        "ramda": "^0.27.1",
-        "stringify-entities": "^3.1.0",
-        "urijs": "^1.19.6"
-      }
-    },
-    "react-native-safe-area-context": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-3.2.0.tgz",
-      "integrity": "sha512-k2Nty4PwSnrg9HwrYeeE+EYqViYJoOFwEy9LxL5RIRfoqxAq/uQXNGwpUg2/u4gnKpBbEPa9eRh15KKMe/VHkA=="
-    },
-    "react-native-screens": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.4.0.tgz",
-      "integrity": "sha512-cg+q9MRnVdeOcJyvJtqffoXLur/C2wHA/7IO2+FAipzTlgHbbM1mTuSM7qG+SeiQjoIs4mHOEf7A0ziPKW04sA==",
-      "requires": {
-        "warn-once": "^0.1.0"
-      }
-    },
-    "react-native-svg": {
-      "version": "12.1.1",
-      "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-12.1.1.tgz",
-      "integrity": "sha512-NIAJ8jCnXGCqGWXkkJ1GTzO4a3Md5at5sagYV8Vh4MXYnL4z5Rh428Wahjhh+LIjx40EE5xM5YtwyJBqOIba2Q==",
-      "requires": {
-        "css-select": "^2.1.0",
-        "css-tree": "^1.0.0-alpha.39"
-      }
-    },
-    "react-native-tab-view": {
-      "version": "2.16.0",
-      "resolved": "https://registry.npmjs.org/react-native-tab-view/-/react-native-tab-view-2.16.0.tgz",
-      "integrity": "sha512-ac2DmT7+l13wzIFqtbfXn4wwfgtPoKzWjjZyrK1t+T8sdemuUvD4zIt+UImg03fu3s3VD8Wh/fBrIdcqQyZJWg=="
-    },
-    "react-native-vector-icons": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-8.1.0.tgz",
-      "integrity": "sha512-sHIdBB6Y0dHaot2fMXgy5J/hhCn5YuyN7SKDNFgPzL8KA1oF2/v7mgYMavnK7LIIs2dJoGnDANKf61dsU+TZlg==",
-      "requires": {
-        "lodash.frompairs": "^4.0.1",
-        "lodash.isequal": "^4.5.0",
-        "lodash.isstring": "^4.0.1",
-        "lodash.omit": "^4.5.0",
-        "lodash.pick": "^4.4.0",
-        "lodash.template": "^4.5.0",
-        "prop-types": "^15.7.2",
-        "yargs": "^16.1.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
-        },
-        "cliui": {
-          "version": "7.0.4",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
-          "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
-          "requires": {
-            "string-width": "^4.2.0",
-            "strip-ansi": "^6.0.0",
-            "wrap-ansi": "^7.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        },
-        "wrap-ansi": {
-          "version": "7.0.0",
-          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
-          "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
-          "requires": {
-            "ansi-styles": "^4.0.0",
-            "string-width": "^4.1.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "y18n": {
-          "version": "5.0.8",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
-          "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
-        },
-        "yargs": {
-          "version": "16.2.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
-          "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
-          "requires": {
-            "cliui": "^7.0.2",
-            "escalade": "^3.1.1",
-            "get-caller-file": "^2.0.5",
-            "require-directory": "^2.1.1",
-            "string-width": "^4.2.0",
-            "y18n": "^5.0.5",
-            "yargs-parser": "^20.2.2"
-          }
-        },
-        "yargs-parser": {
-          "version": "20.2.9",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
-          "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
-        }
-      }
-    },
-    "react-native-video": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/react-native-video/-/react-native-video-5.1.1.tgz",
-      "integrity": "sha512-zee8gRUrjPWRoZSEBiMebClqu1iAuCQNLjzqpmXFrRWEoJj7azM3BPqLQWJgsnfLiYUYGySeApC/G60THM5+tw==",
-      "requires": {
-        "keymirror": "^0.1.1",
-        "prop-types": "^15.7.2",
-        "shaka-player": "^2.5.9"
-      }
-    },
-    "react-refresh": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
-      "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA=="
-    },
-    "react-shallow-renderer": {
-      "version": "16.14.1",
-      "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz",
-      "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==",
-      "dev": true,
-      "requires": {
-        "object-assign": "^4.1.1",
-        "react-is": "^16.12.0 || ^17.0.0"
-      }
-    },
-    "react-test-renderer": {
-      "version": "17.0.1",
-      "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.1.tgz",
-      "integrity": "sha512-/dRae3mj6aObwkjCcxZPlxDFh73XZLgvwhhyON2haZGUEhiaY5EjfAdw+d/rQmlcFwdTpMXCSGVk374QbCTlrA==",
-      "dev": true,
-      "requires": {
-        "object-assign": "^4.1.1",
-        "react-is": "^17.0.1",
-        "react-shallow-renderer": "^16.13.1",
-        "scheduler": "^0.20.1"
-      }
-    },
-    "read-pkg": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
-      "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
-      "dev": true,
-      "requires": {
-        "@types/normalize-package-data": "^2.4.0",
-        "normalize-package-data": "^2.5.0",
-        "parse-json": "^5.0.0",
-        "type-fest": "^0.6.0"
-      },
-      "dependencies": {
-        "parse-json": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
-          "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
-          "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"
-          }
-        },
-        "type-fest": {
-          "version": "0.6.0",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
-          "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
-          "dev": true
-        }
-      }
-    },
-    "read-pkg-up": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
-      "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
-      "dev": true,
-      "requires": {
-        "find-up": "^4.1.0",
-        "read-pkg": "^5.2.0",
-        "type-fest": "^0.8.1"
-      },
-      "dependencies": {
-        "type-fest": {
-          "version": "0.8.1",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-          "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-          "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==",
-      "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"
-      }
-    },
-    "recast": {
-      "version": "0.20.4",
-      "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.4.tgz",
-      "integrity": "sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ==",
-      "requires": {
-        "ast-types": "0.14.2",
-        "esprima": "~4.0.0",
-        "source-map": "~0.6.1",
-        "tslib": "^2.0.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=="
-        }
-      }
-    },
-    "rechoir": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
-      "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
-      "requires": {
-        "resolve": "^1.1.6"
-      }
-    },
-    "regenerate": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
-      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
-    },
-    "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==",
-      "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==",
-      "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==",
-      "requires": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
-      }
-    },
-    "regexp.prototype.flags": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
-      "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "regexpp": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
-      "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
-      "dev": true
-    },
-    "regexpu-core": {
-      "version": "4.7.1",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz",
-      "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==",
-      "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=="
-    },
-    "regjsparser": {
-      "version": "0.6.9",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz",
-      "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==",
-      "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="
-        }
-      }
-    },
-    "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="
-    },
-    "repeat-element": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
-      "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ=="
-    },
-    "repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
-    },
-    "request": {
-      "version": "2.88.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"
-      },
-      "dependencies": {
-        "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"
-          }
-        }
-      }
-    },
-    "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"
-      },
-      "dependencies": {
-        "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"
-          }
-        }
-      }
-    },
-    "require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
-    },
-    "require-main-filename": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
-    },
-    "resolve": {
-      "version": "1.20.0",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
-      "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
-      "requires": {
-        "is-core-module": "^2.2.0",
-        "path-parse": "^1.0.6"
-      }
-    },
-    "resolve-cwd": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
-      "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
-      "dev": true,
-      "requires": {
-        "resolve-from": "^5.0.0"
-      },
-      "dependencies": {
-        "resolve-from": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
-          "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
-          "dev": true
-        }
-      }
-    },
-    "resolve-from": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g="
-    },
-    "resolve-url": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
-    },
-    "restore-cursor": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-      "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=="
-    },
-    "rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "requires": {
-        "glob": "^7.1.3"
-      }
-    },
-    "rsvp": {
-      "version": "4.8.5",
-      "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
-      "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA=="
-    },
-    "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=="
-    },
-    "safe-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
-      "requires": {
-        "ret": "~0.1.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
-    },
-    "sane": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
-      "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
-      "requires": {
-        "@cnakazawa/watch": "^1.0.3",
-        "anymatch": "^2.0.0",
-        "capture-exit": "^2.0.0",
-        "exec-sh": "^0.3.2",
-        "execa": "^1.0.0",
-        "fb-watchman": "^2.0.0",
-        "micromatch": "^3.1.4",
-        "minimist": "^1.1.1",
-        "walker": "~1.0.5"
-      },
-      "dependencies": {
-        "anymatch": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          }
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.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=",
-              "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=",
-          "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=",
-              "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=",
-          "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=",
-              "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==",
-          "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"
-          }
-        },
-        "normalize-path": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-          "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-          "requires": {
-            "remove-trailing-separator": "^1.0.1"
-          }
-        },
-        "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=",
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
-      }
-    },
-    "sax": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
-    },
-    "saxes": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
-      "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
-      "dev": true,
-      "requires": {
-        "xmlchars": "^2.2.0"
-      }
-    },
-    "scheduler": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
-      "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
-      "requires": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-    },
-    "send": {
-      "version": "0.17.1",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
-      "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"
-      }
-    },
-    "serialize-error": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
-      "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go="
-    },
-    "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==",
-      "requires": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.17.1"
-      }
-    },
-    "set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
-    },
-    "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==",
-      "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=",
-          "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="
-    },
-    "setprototypeof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
-      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
-    },
-    "shaka-player": {
-      "version": "2.5.23",
-      "resolved": "https://registry.npmjs.org/shaka-player/-/shaka-player-2.5.23.tgz",
-      "integrity": "sha512-3MC9k0OXJGw8AZ4n/ZNCZS2yDxx+3as5KgH6Tx4Q5TRboTBBCu6dYPI5vp1DxKeyU12MBN1Zcbs7AKzXv2EnCg==",
-      "requires": {
-        "eme-encryption-scheme-polyfill": "^2.0.1"
-      }
-    },
-    "shallow-clone": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
-      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
-      "requires": {
-        "kind-of": "^6.0.2"
-      }
-    },
-    "shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-      "requires": {
-        "shebang-regex": "^1.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
-    },
-    "shell-quote": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
-      "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
-      "requires": {
-        "array-filter": "~0.0.0",
-        "array-map": "~0.0.0",
-        "array-reduce": "~0.0.0",
-        "jsonify": "~0.0.0"
-      }
-    },
-    "shelljs": {
-      "version": "0.8.4",
-      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
-      "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
-      "requires": {
-        "glob": "^7.0.0",
-        "interpret": "^1.0.0",
-        "rechoir": "^0.6.2"
-      }
-    },
-    "shellwords": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
-      "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
-      "dev": true,
-      "optional": true
-    },
-    "side-channel": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.0",
-        "get-intrinsic": "^1.0.2",
-        "object-inspect": "^1.9.0"
-      }
-    },
-    "signal-exit": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
-      "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
-    },
-    "simple-plist": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz",
-      "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==",
-      "requires": {
-        "bplist-creator": "0.0.8",
-        "bplist-parser": "0.2.0",
-        "plist": "^3.0.1"
-      }
-    },
-    "simple-swizzle": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
-      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
-      "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=="
-        }
-      }
-    },
-    "sisteransi": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
-      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
-    },
-    "slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
-    },
-    "slice-ansi": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
-      "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
-      "requires": {
-        "ansi-styles": "^3.2.0",
-        "astral-regex": "^1.0.0",
-        "is-fullwidth-code-point": "^2.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-          "requires": {
-            "color-convert": "^1.9.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==",
-          "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="
-        }
-      }
-    },
-    "snapdragon": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-      "requires": {
-        "base": "^0.11.1",
-        "debug": "^2.2.0",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "map-cache": "^0.2.2",
-        "source-map": "^0.5.6",
-        "source-map-resolve": "^0.5.0",
-        "use": "^3.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
-        }
-      }
-    },
-    "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==",
-      "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=",
-          "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==",
-          "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==",
-          "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==",
-          "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==",
-      "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=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "source-map": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-      "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
-    },
-    "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==",
-      "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==",
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "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=="
-        }
-      }
-    },
-    "source-map-url": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
-      "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw=="
-    },
-    "spdx-correct": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
-      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-      "dev": true,
-      "requires": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-exceptions": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-      "dev": true
-    },
-    "spdx-expression-parse": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-      "dev": true,
-      "requires": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-license-ids": {
-      "version": "3.0.8",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.8.tgz",
-      "integrity": "sha512-NDgA96EnaLSvtbM7trJj+t1LUR3pirkDCcz9nOUlPb5DMBGsH7oES6C3hs3j7R9oHEa1EMvReS/BUAIT5Tcr0g==",
-      "dev": true
-    },
-    "split-on-first": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
-      "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw=="
-    },
-    "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==",
-      "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="
-    },
-    "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"
-      }
-    },
-    "stack-utils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz",
-      "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "^2.0.0"
-      },
-      "dependencies": {
-        "escape-string-regexp": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
-          "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
-          "dev": true
-        }
-      }
-    },
-    "stackframe": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz",
-      "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA=="
-    },
-    "stacktrace-parser": {
-      "version": "0.1.10",
-      "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
-      "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
-      "requires": {
-        "type-fest": "^0.7.1"
-      }
-    },
-    "static-extend": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
-      "requires": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
-    "statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
-    },
-    "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-buffers": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
-      "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ="
-    },
-    "strict-uri-encode": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
-      "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY="
-    },
-    "string-hash-64": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/string-hash-64/-/string-hash-64-1.0.3.tgz",
-      "integrity": "sha512-D5OKWKvDhyVWWn2x5Y9b+37NUllks34q1dCDhk/vYcso9fmhs+Tl3KR/gE4v5UNj2UA35cnX4KdVVGkG1deKqw=="
-    },
-    "string-length": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
-      "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
-      "dev": true,
-      "requires": {
-        "char-regex": "^1.0.2",
-        "strip-ansi": "^6.0.0"
-      },
-      "dependencies": {
-        "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
-        },
-        "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"
-          }
-        }
-      }
-    },
-    "string-width": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
-      "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
-      "requires": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
-        },
-        "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=="
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        }
-      }
-    },
-    "string.prototype.matchall": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz",
-      "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.2",
-        "has-symbols": "^1.0.1",
-        "internal-slot": "^1.0.3",
-        "regexp.prototype.flags": "^1.3.1",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "string.prototype.trimend": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
-      "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "string.prototype.trimstart": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
-      "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "stringify-entities": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz",
-      "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==",
-      "requires": {
-        "character-entities-html4": "^1.0.0",
-        "character-entities-legacy": "^1.0.0",
-        "xtend": "^4.0.0"
-      }
-    },
-    "strip-ansi": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-      "requires": {
-        "ansi-regex": "^4.1.0"
-      }
-    },
-    "strip-bom": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
-      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
-      "dev": true
-    },
-    "strip-eof": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
-    },
-    "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
-    },
-    "strip-json-comments": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-      "dev": true
-    },
-    "sudo-prompt": {
-      "version": "9.2.1",
-      "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
-      "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw=="
-    },
-    "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==",
-      "requires": {
-        "has-flag": "^4.0.0"
-      }
-    },
-    "supports-hyperlinks": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
-      "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
-      "dev": true,
-      "requires": {
-        "has-flag": "^4.0.0",
-        "supports-color": "^7.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
-    },
-    "table": {
-      "version": "5.4.6",
-      "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
-      "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
-      "dev": true,
-      "requires": {
-        "ajv": "^6.10.2",
-        "lodash": "^4.17.14",
-        "slice-ansi": "^2.1.0",
-        "string-width": "^3.0.0"
-      },
-      "dependencies": {
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        }
-      }
-    },
-    "temp": {
-      "version": "0.8.3",
-      "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
-      "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
-      "requires": {
-        "os-tmpdir": "^1.0.0",
-        "rimraf": "~2.2.6"
-      },
-      "dependencies": {
-        "rimraf": {
-          "version": "2.2.8",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
-          "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI="
-        }
-      }
-    },
-    "terminal-link": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
-      "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
-      "dev": true,
-      "requires": {
-        "ansi-escapes": "^4.2.1",
-        "supports-hyperlinks": "^2.0.0"
-      }
-    },
-    "test-exclude": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
-      "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
-      "dev": true,
-      "requires": {
-        "@istanbuljs/schema": "^0.1.2",
-        "glob": "^7.1.4",
-        "minimatch": "^3.0.4"
-      }
-    },
-    "text-table": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
-      "dev": true
-    },
-    "throat": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
-      "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA=="
-    },
-    "through2": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
-      "requires": {
-        "readable-stream": "~2.3.6",
-        "xtend": "~4.0.1"
-      }
-    },
-    "tmpl": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
-      "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE="
-    },
-    "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="
-    },
-    "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=",
-      "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=",
-          "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==",
-      "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==",
-      "requires": {
-        "is-number": "^7.0.0"
-      }
-    },
-    "toidentifier": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
-      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
-    },
-    "tough-cookie": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
-      "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
-      "dev": true,
-      "requires": {
-        "psl": "^1.1.33",
-        "punycode": "^2.1.1",
-        "universalify": "^0.1.2"
-      }
-    },
-    "tr46": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz",
-      "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.1"
-      }
-    },
-    "ts-toolbelt": {
-      "version": "6.15.5",
-      "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz",
-      "integrity": "sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A=="
-    },
-    "tslib": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
-      "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
-    },
-    "tsutils": {
-      "version": "3.21.0",
-      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
-      "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
-      "dev": true,
-      "requires": {
-        "tslib": "^1.8.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "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.4.0",
-      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
-      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "^1.2.1"
-      }
-    },
-    "type-detect": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
-      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
-      "dev": true
-    },
-    "type-fest": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
-      "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="
-    },
-    "typedarray-to-buffer": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
-      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
-      "dev": true,
-      "requires": {
-        "is-typedarray": "^1.0.0"
-      }
-    },
-    "ua-parser-js": {
-      "version": "0.7.28",
-      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz",
-      "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g=="
-    },
-    "uglify-es": {
-      "version": "3.3.9",
-      "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
-      "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
-      "requires": {
-        "commander": "~2.13.0",
-        "source-map": "~0.6.1"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.13.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
-          "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA=="
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
-    },
-    "ultron": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
-      "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po="
-    },
-    "unbox-primitive": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
-      "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1",
-        "has-bigints": "^1.0.1",
-        "has-symbols": "^1.0.2",
-        "which-boxed-primitive": "^1.0.2"
-      }
-    },
-    "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=="
-    },
-    "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==",
-      "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=="
-    },
-    "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=="
-    },
-    "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==",
-      "requires": {
-        "arr-union": "^3.1.0",
-        "get-value": "^2.0.6",
-        "is-extendable": "^0.1.1",
-        "set-value": "^2.0.1"
-      }
-    },
-    "universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
-    },
-    "unset-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
-      "requires": {
-        "has-value": "^0.3.1",
-        "isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "has-value": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
-          "requires": {
-            "get-value": "^2.0.3",
-            "has-values": "^0.1.4",
-            "isobject": "^2.0.0"
-          },
-          "dependencies": {
-            "isobject": {
-              "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-              "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="
-        }
-      }
-    },
-    "uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "urijs": {
-      "version": "1.19.7",
-      "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.7.tgz",
-      "integrity": "sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA=="
-    },
-    "urix": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
-    },
-    "use": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
-    },
-    "use-subscription": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz",
-      "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==",
-      "requires": {
-        "object-assign": "^4.1.1"
-      }
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
-    },
-    "uuid": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
-    },
-    "v8-compile-cache": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
-      "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
-      "dev": true
-    },
-    "v8-to-istanbul": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz",
-      "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==",
-      "dev": true,
-      "requires": {
-        "@types/istanbul-lib-coverage": "^2.0.1",
-        "convert-source-map": "^1.6.0",
-        "source-map": "^0.7.3"
-      }
-    },
-    "validate-npm-package-license": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-      "dev": true,
-      "requires": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
-    "vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
-    },
-    "verror": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
-      }
-    },
-    "vlq": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
-      "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="
-    },
-    "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": "2.0.0",
-      "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
-      "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
-      "dev": true,
-      "requires": {
-        "xml-name-validator": "^3.0.0"
-      }
-    },
-    "walker": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
-      "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
-      "requires": {
-        "makeerror": "1.0.x"
-      }
-    },
-    "warn-once": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.0.tgz",
-      "integrity": "sha512-recZTSvuaH/On5ZU5ywq66y99lImWqzP93+AiUo9LUwG8gXHW+LJjhOd6REJHm7qb0niYqrEQJvbHSQfuJtTqA=="
-    },
-    "wcwidth": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
-      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
-      "requires": {
-        "defaults": "^1.0.3"
-      }
-    },
-    "webidl-conversions": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
-      "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
-      "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-fetch": {
-      "version": "3.6.2",
-      "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
-      "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA=="
-    },
-    "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": "8.5.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz",
-      "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.7.0",
-        "tr46": "^2.0.2",
-        "webidl-conversions": "^6.1.0"
-      }
-    },
-    "which": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "requires": {
-        "isexe": "^2.0.0"
-      }
-    },
-    "which-boxed-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
-      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-      "dev": true,
-      "requires": {
-        "is-bigint": "^1.0.1",
-        "is-boolean-object": "^1.1.0",
-        "is-number-object": "^1.0.4",
-        "is-string": "^1.0.5",
-        "is-symbol": "^1.0.3"
-      }
-    },
-    "which-module": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
-    },
-    "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==",
-      "requires": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        }
-      }
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-    },
-    "write": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
-      "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
-      "dev": true,
-      "requires": {
-        "mkdirp": "^0.5.1"
-      }
-    },
-    "write-file-atomic": {
-      "version": "2.4.3",
-      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
-      "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
-      "requires": {
-        "graceful-fs": "^4.1.11",
-        "imurmurhash": "^0.1.4",
-        "signal-exit": "^3.0.2"
-      }
-    },
-    "ws": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
-      "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
-      "requires": {
-        "async-limiter": "~1.0.0"
-      }
-    },
-    "xcode": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz",
-      "integrity": "sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ==",
-      "requires": {
-        "simple-plist": "^1.0.0",
-        "uuid": "^3.3.2"
-      }
-    },
-    "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
-    },
-    "xmlbuilder": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
-      "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
-    },
-    "xmlchars": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
-      "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
-      "dev": true
-    },
-    "xmldoc": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz",
-      "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==",
-      "requires": {
-        "sax": "^1.2.1"
-      }
-    },
-    "xmldom": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz",
-      "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA=="
-    },
-    "xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
-    },
-    "y18n": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
-      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
-    },
-    "yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true
-    },
-    "yargs": {
-      "version": "15.4.1",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
-      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
-      "requires": {
-        "cliui": "^6.0.0",
-        "decamelize": "^1.2.0",
-        "find-up": "^4.1.0",
-        "get-caller-file": "^2.0.1",
-        "require-directory": "^2.1.1",
-        "require-main-filename": "^2.0.0",
-        "set-blocking": "^2.0.0",
-        "string-width": "^4.2.0",
-        "which-module": "^2.0.0",
-        "y18n": "^4.0.0",
-        "yargs-parser": "^18.1.2"
-      }
-    },
-    "yargs-parser": {
-      "version": "18.1.3",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
-      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-      "requires": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      }
-    }
-  }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index 44f024b..0000000
--- a/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "name": "youtubeclone",
-  "version": "0.0.1",
-  "private": true,
-  "scripts": {
-    "android": "react-native run-android",
-    "ios": "react-native run-ios",
-    "start": "react-native start",
-    "test": "jest",
-    "lint": "eslint ."
-  },
-  "dependencies": {
-    "@react-native-community/datetimepicker": "^3.5.2",
-    "@react-native-community/masked-view": "^0.1.11",
-    "@react-native-community/progress-view": "^1.3.1",
-    "@react-navigation/bottom-tabs": "^5.11.11",
-    "@react-navigation/material-top-tabs": "^5.3.15",
-    "@react-navigation/native": "^5.9.4",
-    "@react-navigation/stack": "^5.14.5",
-    "creditcardutils": "^1.0.0",
-    "dayjs": "^1.10.6",
-    "react": "17.0.1",
-    "react-native": "0.64.1",
-    "react-native-chart-kit": "^6.11.0",
-    "react-native-gesture-handler": "^1.10.3",
-    "react-native-image-picker": "^4.0.6",
-    "react-native-modal": "^12.0.2",
-    "react-native-orientation-locker": "^1.3.1",
-    "react-native-reanimated": "^2.2.0",
-    "react-native-render-html": "^6.0.4",
-    "react-native-safe-area-context": "^3.2.0",
-    "react-native-screens": "^3.4.0",
-    "react-native-svg": "^12.1.1",
-    "react-native-tab-view": "^2.16.0",
-    "react-native-vector-icons": "^8.1.0",
-    "react-native-video": "^5.1.1"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.12.9",
-    "@babel/runtime": "^7.12.5",
-    "@react-native-community/eslint-config": "^2.0.0",
-    "babel-jest": "^26.6.3",
-    "eslint": "7.14.0",
-    "jest": "^26.6.3",
-    "metro-react-native-babel-preset": "^0.64.0",
-    "react-test-renderer": "17.0.1"
-  },
-  "jest": {
-    "preset": "react-native"
-  }
-}
diff --git a/react-native.config.js b/react-native.config.js
deleted file mode 100644
index ef09f5b..0000000
--- a/react-native.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = {
-  project: {
-    ios: {},
-    android: {},
-  },
-  assets: ['./assets/fonts'],
-};
diff --git a/screenshots/AddCard.png b/screenshots/AddCard.png
deleted file mode 100644
index 2616421..0000000
Binary files a/screenshots/AddCard.png and /dev/null differ
diff --git a/screenshots/Alert.png b/screenshots/Alert.png
deleted file mode 100644
index 9aecca4..0000000
Binary files a/screenshots/Alert.png and /dev/null differ
diff --git a/screenshots/BlokedUsers.png b/screenshots/BlokedUsers.png
deleted file mode 100644
index 6d41e35..0000000
Binary files a/screenshots/BlokedUsers.png and /dev/null differ
diff --git a/screenshots/BottomModal.png b/screenshots/BottomModal.png
deleted file mode 100644
index 9363e62..0000000
Binary files a/screenshots/BottomModal.png and /dev/null differ
diff --git a/screenshots/ChannelDesc.png b/screenshots/ChannelDesc.png
deleted file mode 100644
index 38cccba..0000000
Binary files a/screenshots/ChannelDesc.png and /dev/null differ
diff --git a/screenshots/ChannelScreen.png b/screenshots/ChannelScreen.png
deleted file mode 100644
index c6f1be7..0000000
Binary files a/screenshots/ChannelScreen.png and /dev/null differ
diff --git a/screenshots/Comments.png b/screenshots/Comments.png
deleted file mode 100644
index 98048df..0000000
Binary files a/screenshots/Comments.png and /dev/null differ
diff --git a/screenshots/Cover_1.png b/screenshots/Cover_1.png
deleted file mode 100644
index 2ae53d1..0000000
Binary files a/screenshots/Cover_1.png and /dev/null differ
diff --git a/screenshots/Download.png b/screenshots/Download.png
deleted file mode 100644
index d5cd450..0000000
Binary files a/screenshots/Download.png and /dev/null differ
diff --git a/screenshots/EMptyNotifications.png b/screenshots/EMptyNotifications.png
deleted file mode 100644
index d8d8ac1..0000000
Binary files a/screenshots/EMptyNotifications.png and /dev/null differ
diff --git a/screenshots/EarningScreen.png b/screenshots/EarningScreen.png
deleted file mode 100644
index 733a0a4..0000000
Binary files a/screenshots/EarningScreen.png and /dev/null differ
diff --git a/screenshots/EmptyUser.png b/screenshots/EmptyUser.png
deleted file mode 100644
index d0408d7..0000000
Binary files a/screenshots/EmptyUser.png and /dev/null differ
diff --git a/screenshots/ExploreScreen.png b/screenshots/ExploreScreen.png
deleted file mode 100644
index 981a272..0000000
Binary files a/screenshots/ExploreScreen.png and /dev/null differ
diff --git a/screenshots/HomeScreen.png b/screenshots/HomeScreen.png
deleted file mode 100644
index 4b377f7..0000000
Binary files a/screenshots/HomeScreen.png and /dev/null differ
diff --git a/screenshots/Insight.png b/screenshots/Insight.png
deleted file mode 100644
index 5182720..0000000
Binary files a/screenshots/Insight.png and /dev/null differ
diff --git a/screenshots/Insight2.png b/screenshots/Insight2.png
deleted file mode 100644
index ea6d3c5..0000000
Binary files a/screenshots/Insight2.png and /dev/null differ
diff --git a/screenshots/JoinScreen.png b/screenshots/JoinScreen.png
deleted file mode 100644
index 6e376b5..0000000
Binary files a/screenshots/JoinScreen.png and /dev/null differ
diff --git a/screenshots/LibraryScreen.png b/screenshots/LibraryScreen.png
deleted file mode 100644
index ce55fa4..0000000
Binary files a/screenshots/LibraryScreen.png and /dev/null differ
diff --git a/screenshots/Liked.png b/screenshots/Liked.png
deleted file mode 100644
index f5abb54..0000000
Binary files a/screenshots/Liked.png and /dev/null differ
diff --git a/screenshots/LoginScreen.png b/screenshots/LoginScreen.png
deleted file mode 100644
index 949187a..0000000
Binary files a/screenshots/LoginScreen.png and /dev/null differ
diff --git a/screenshots/Purchase.png b/screenshots/Purchase.png
deleted file mode 100644
index 1d76c57..0000000
Binary files a/screenshots/Purchase.png and /dev/null differ
diff --git a/screenshots/RegisterScreen.png b/screenshots/RegisterScreen.png
deleted file mode 100644
index 064e5b8..0000000
Binary files a/screenshots/RegisterScreen.png and /dev/null differ
diff --git a/screenshots/Search.png b/screenshots/Search.png
deleted file mode 100644
index 343830c..0000000
Binary files a/screenshots/Search.png and /dev/null differ
diff --git a/screenshots/Settings.png b/screenshots/Settings.png
deleted file mode 100644
index 83ac56e..0000000
Binary files a/screenshots/Settings.png and /dev/null differ
diff --git a/screenshots/Splash.png b/screenshots/Splash.png
deleted file mode 100644
index 7e5d124..0000000
Binary files a/screenshots/Splash.png and /dev/null differ
diff --git a/screenshots/Upload.png b/screenshots/Upload.png
deleted file mode 100644
index ea04eff..0000000
Binary files a/screenshots/Upload.png and /dev/null differ
diff --git a/screenshots/UserScreen.png b/screenshots/UserScreen.png
deleted file mode 100644
index bda0850..0000000
Binary files a/screenshots/UserScreen.png and /dev/null differ
diff --git a/screenshots/Verification.png b/screenshots/Verification.png
deleted file mode 100644
index a42ac29..0000000
Binary files a/screenshots/Verification.png and /dev/null differ
diff --git a/screenshots/VideoDesc.png b/screenshots/VideoDesc.png
deleted file mode 100644
index 8da1d16..0000000
Binary files a/screenshots/VideoDesc.png and /dev/null differ
diff --git a/src/Configurations/Colors.js b/src/Configurations/Colors.js
deleted file mode 100644
index 2dc3f40..0000000
--- a/src/Configurations/Colors.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const DarkMode = {
-  background: '#303030',
-};
-
-const LiteMode = {
-  background: '#fff',
-  descText: '#9c9c9c',
-};
-
-export {DarkMode, LiteMode};
diff --git a/src/Modules/Alert.js b/src/Modules/Alert.js
deleted file mode 100644
index 86c18bf..0000000
--- a/src/Modules/Alert.js
+++ /dev/null
@@ -1,81 +0,0 @@
-import React from 'react';
-import {StyleSheet, View, Text, Pressable} from 'react-native';
-import Modal from 'react-native-modal';
-
-const Alert = props => {
-  const {isVisible, dismiss, title, message, buttons, children} = props;
-  return (
-    <Modal
-      isVisible={isVisible}
-      style={styles.modal}
-      onBackButtonPress={dismiss}
-      onBackdropPress={dismiss}
-      useNativeDriverForBackdrop
-      {...props}>
-      <View style={styles.viewContainer}>
-        <View style={styles.modalLine} />
-        <Text style={styles.modalHeading}>{title}</Text>
-        <Text style={styles.modalText}>{message}</Text>
-        {children}
-        <View style={styles.modalOptionContainer}>
-          {buttons &&
-            buttons.map(item => {
-              return (
-                <Pressable
-                  onPress={item?.cancellable ? dismiss : item?.onPress}
-                  key={Math.random() * 10}>
-                  <Text style={styles.actionText}>{item?.title}</Text>
-                </Pressable>
-              );
-            })}
-        </View>
-      </View>
-    </Modal>
-  );
-};
-
-const styles = StyleSheet.create({
-  modal: {
-    alignItems: 'center',
-  },
-  viewContainer: {
-    backgroundColor: '#fff',
-    width: '85%',
-    borderRadius: 6,
-    paddingVertical: 6,
-    paddingHorizontal: 13,
-  },
-  modalLine: {
-    borderBottomWidth: 4,
-    borderBottomColor: '#e4e8ec',
-    width: '10%',
-    alignSelf: 'center',
-    borderRadius: 10,
-    marginVertical: 10,
-  },
-  modalText: {
-    fontFamily: 'Roboto-Regular',
-    fontSize: 16.7,
-    color: '#9098a3',
-  },
-  actionText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 13.8,
-    color: '#212121',
-    marginHorizontal: 12,
-  },
-  modalOptionContainer: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    alignSelf: 'flex-end',
-    marginBottom: 10,
-  },
-  modalHeading: {
-    fontFamily: 'Roboto-Black',
-    fontSize: 22,
-    color: '#212121',
-    textAlign: 'center',
-  },
-});
-
-export default Alert;
diff --git a/src/Modules/BottomModal.js b/src/Modules/BottomModal.js
deleted file mode 100644
index fa2a854..0000000
--- a/src/Modules/BottomModal.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import React from 'react';
-import {StyleSheet, View} from 'react-native';
-import Modal from 'react-native-modal';
-
-const BottomModal = props => {
-  const {children, isVisible, dismiss, scrollView} = props;
-  return (
-    <Modal
-      isVisible={isVisible}
-      swipeDirection="down"
-      style={styles.modal}
-      onBackButtonPress={dismiss}
-      onBackdropPress={dismiss}
-      onSwipeComplete={dismiss}
-      propagateSwipe={true}
-      scrollOffset={1}
-      scrollTo={() => {}}
-      useNativeDriverForBackdrop
-      {...props}>
-      <View
-        style={
-          scrollView
-            ? // eslint-disable-next-line react-native/no-inline-styles
-              {...styles.viewContainer, height: '65%'}
-            : styles.viewContainer
-        }>
-        <View style={styles.modalLine} />
-        {children}
-      </View>
-    </Modal>
-  );
-};
-
-const styles = StyleSheet.create({
-  modal: {
-    justifyContent: 'flex-end',
-    margin: 0,
-  },
-  viewContainer: {
-    backgroundColor: '#fff',
-    borderTopLeftRadius: 12,
-    borderTopRightRadius: 12,
-  },
-  modalLine: {
-    borderBottomWidth: 4,
-    borderBottomColor: '#e4e8ec',
-    width: '10%',
-    alignSelf: 'center',
-    borderRadius: 10,
-    marginVertical: 10,
-  },
-});
-
-export default BottomModal;
diff --git a/src/Modules/Button.js b/src/Modules/Button.js
deleted file mode 100644
index a16fd41..0000000
--- a/src/Modules/Button.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import React from 'react';
-import {Pressable, Text, StyleSheet, ActivityIndicator} from 'react-native';
-
-const Button = props => {
-  const {title, onPress, styleProps, textProps, textStyle, isLoading} = props;
-  return (
-    <Pressable
-      style={[styles.editButton, styleProps]}
-      onPress={onPress}
-      {...props}>
-      {isLoading ? (
-        <ActivityIndicator />
-      ) : (
-        <Text style={[styles.buttonText, textStyle]} {...textProps}>
-          {title}
-        </Text>
-      )}
-    </Pressable>
-  );
-};
-
-const styles = StyleSheet.create({
-  editButton: {
-    width: '38%',
-    height: 43,
-    borderRadius: 6,
-    alignItems: 'center',
-    justifyContent: 'center',
-    marginVertical: 10,
-    borderWidth: 1.7,
-    borderColor: '#04abf2',
-    alignSelf: 'center',
-  },
-  buttonText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#04abf2',
-  },
-});
-
-export default Button;
diff --git a/src/Modules/CoverVideo.js b/src/Modules/CoverVideo.js
deleted file mode 100644
index 82996db..0000000
--- a/src/Modules/CoverVideo.js
+++ /dev/null
@@ -1,102 +0,0 @@
-import React, {useState} from 'react';
-import {
-  Pressable,
-  View,
-  Text,
-  Image,
-  TouchableOpacity,
-  StyleSheet,
-} from 'react-native';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {heightPercentageToDP} from '../Utils/DpToPixel';
-import {numberFormat} from '../Utils/Util';
-import Loader from './Loading';
-
-const CoverVideo = props => {
-  const [isLoading, setIsLoading] = useState(true);
-
-  const {
-    onPress,
-    thumbnail,
-    channelAvtar,
-    channelName,
-    action,
-    title,
-    channelAction,
-    views,
-    uploaded,
-  } = props;
-
-  return (
-    <Pressable onPress={onPress}>
-      {isLoading && <Loader />}
-      <Image
-        source={{
-          uri: thumbnail,
-        }}
-        onLoad={() => setIsLoading(false)}
-        resizeMode="cover"
-        style={styles.thumbnail}
-      />
-      <View style={styles.detailContainer}>
-        <Pressable onPress={channelAction}>
-          <Image
-            style={styles.channelAvtar}
-            source={{
-              uri: channelAvtar,
-            }}
-            resizeMode="cover"
-          />
-        </Pressable>
-        <View style={styles.titleContainer}>
-          <Text style={styles.videoTitle} numberOfLines={2}>
-            {title}
-          </Text>
-          <Text style={styles.channelName} numberOfLines={2}>
-            {`${channelName} . ${numberFormat(views)} views . ${
-              uploaded === 'just now' ? 'just now' : `${uploaded} ago`
-            }`}
-          </Text>
-        </View>
-        <TouchableOpacity style={styles.menuButton} onPress={action}>
-          <Icon name="ellipsis-vertical" size={14} color="#6c6c6c" />
-        </TouchableOpacity>
-      </View>
-    </Pressable>
-  );
-};
-
-const styles = StyleSheet.create({
-  thumbnail: {
-    width: '100%',
-    height: heightPercentageToDP('26%'),
-  },
-  detailContainer: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    marginVertical: 8,
-    marginHorizontal: 10,
-    alignItems: 'center',
-  },
-  channelName: {
-    color: '#9c9c9c',
-  },
-  channelAvtar: {
-    width: 28,
-    height: 28,
-    borderRadius: 28 / 2,
-  },
-  videoTitle: {
-    color: '#282828',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    letterSpacing: 0.1,
-  },
-
-  titleContainer: {
-    flexDirection: 'column',
-    width: '80%',
-  },
-});
-
-export default CoverVideo;
diff --git a/src/Modules/CreditCard.js b/src/Modules/CreditCard.js
deleted file mode 100644
index 99ddbe7..0000000
--- a/src/Modules/CreditCard.js
+++ /dev/null
@@ -1,150 +0,0 @@
-import React from 'react';
-import {View, Text, ImageBackground, StyleSheet, Image} from 'react-native';
-import creditcardutils from 'creditcardutils';
-import {widthPercentageToDP} from '../Utils/DpToPixel';
-
-const Purchases = props => {
-  const {number, expiration, name} = props;
-  const formatedNumber = creditcardutils.formatCardNumber(String(number));
-  let cardTypeIcon = null;
-  switch (creditcardutils.parseCardType(number.toString())) {
-    case 'amex':
-      cardTypeIcon = {
-        uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAABQCAYAAAA0snrNAAAABmJLR0QA/wD/AP+gvaeTAAATq0lEQVR4nO2ceZRcVZnAf9991Z10h2yymgEM6apegQiJCMJBFJRDkIBAdXUS9TAKAUZDZmAUN5ww4oIKAgcQwygaSNKLw7BIlANCRHBQEpSQququ7oQYIKxZyNZJV737zR9Vr/p1p7aOCRlm3u+c7lP33u+777vvvnvfd7cHAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf8fEX8gfE7vKBmXflHgkFJKinaJmj8i+uNKLqLK7b2dzd/ywnXR5DTH6GN7Z/K+RWEb8DbIM8bKHdbY3whMKKkjcrW4NoHDDLUyHeEY0NEgE2TYPS17fdUd4oROUOuuFBhbTt6KXgKcbFSuKJ+7/Viq49gXhseGhoTGDswBiWjZzOQLVuw2QSaWvzAgXBWe0/ujvsWRrQDG0WtUqUx3/zMROBr0RGv0MiCkw+/LMET1ZjUyEcVXxdkf5e/d8Mxkolr3G8AEhXFlxZUfg3lM0bL3z1qnYDl8kSoiyWvyIUgZYZtfWK0ejsiRgCMMedI2iPDa8MxViZAtyHjJpC8HfjglGj8aJeoTe15k6L1SpQo4vlTexVClAThIYDPC2jKy44FRwOFANTDal9wvQsInezRwKICyxwO7HfRNkC1eWVR1DEgjQCFbVBHgxFzwSsDkfqdFWFXA1jpgAsgU0Nm+pJdFeNMnd4Ivr4LkKz0S6z4XaM4Ftzj9ZnrPQ41DKr1hVvfx1tq/ZsvBmHyCcFeqvfnbwzMPtyX+RZSbc8F/Dp/TextmYL53XUGfTHW0fHy4XkNb9ySr9tVsIWRhb0fT9aUK4SfSlvgDymkIj6Xam2OV6Eybu6Jqy7aaM4013wedmotek2pvnu7J1McSdyj8k09th4rehst9fS3N3SwQ68+zPrb6Q4r8GcAKX+5rb/7ZHrbGEo8BZ5F98Dw2+a/rEW6LzxSVB3PB/GtA4ebe9uZbfHnuBGpKlXfwiRD9V1/83cMrHKBnaeMqlMdLZeintiq9EHgrF5xkxmW+KMilXrpVU5FPsL9ZuXB6es3Slt/WVA+cCsTLKqi8qVZP6mtv+XpfV0tieIUP443M6JrFhRIEvblQfCH62lseAu6vVL4UIYD6aPwkVT6ai0trKH2bJ1AXTU5z07vWrHvghC0A1tGbjZVPlM5WBURX3Tt1R31b/BZV+Q6Aoj8AnOxvUn3NjY8M1ylncH1b/EysFHWWVAs7YcfMevHwKhk1xh+X1t07Xlp63BteeNW9U3fUtyZvVdGFpWwwjp3Vs7Ql4Y9ricbft8vIJKyMArCijaKgyJ3rfnHMLgAWqKlL9Hx0TWfjkwCpjubfRmLJBIM9bEmMmHlW7ZnA+Erki+aT/W98rVw6+xZPfWWwgHpNaPSof/TCa5Y2PwqsLp6lSqQtOcMLZdzRdwBbckHHJ3ir10ImX/CXCQ2tPR+pxGBVeVSFx4r9AccW0gu5odvVzazx/4Ws83okFv+VX04cu6aMCct7lrY84QWmzE5EIrHECwNGNhp40RhdYYyuEGUR0I8N/cSTDXcnPuUY+0Pf1VSgZG83ZXYi4v3uaW/coPD1MvaVxdTPTk1R9EIvQn1dTkNb9ySUi0X5IgvUeIaqlhmqKV/xfq7tqnsHuGOYxKba6vQvvUBo1OgrVNyynuv+QWaeccaTed/GdZlcWlz/yx90XBYx6HQOF17U1xV5Kx9SuUqVafXR+Gle3EBNzX2ovFlYH0yG+ZHYi01euK+p6S6E/y5pYxmMzWSuZrAFLu/raH7eS1R1LweqgLpwovvcvNa26sUCr5fI9/RwLHGyFxDj3ALsyIfRhavunboDYPIlL4026Hy0eJftR0TPFuUTxf6A3ZXkA1iU14Drly//WGYwfynp/Ckm71nXR3v+ATi5iKgVY/IOVl0scSyQdVqNucqLX/eLY3Yp3Fn0goZqxFmYff0BC8RaZS6QLmVnKUIi5LtuVcm38vA5vaOU9OVeWNB5wMMAfb+J7I60Ju5A2MNjz8tnW/uFAKmlDW+HY/GfCnI1kMaGbvfkqnfu+qwKR1Q6o5Fqb/ldqfRILOEWiu/tbIoWivcTjiW/CvrJUjJG3c3eb4s9uoTdy1JLG7rzeug8yD7Yin56SjR+9NqulvUAaOhOJH0txbxu5bT6tu7LUu0sBFjT0bw63Jr8oYjuVVdvgNrc7x6/Y6Vj3Y+I8IoIK0VYqcLEydH4EV66OM5dwM6iOQvnN0S7G7ygI85NwC7QrlRXw6sALFBjh44aDhgNs+IflwpssZi8X6JG9xjh5OXU5BvQ5EteGg3S5N1LEV4IGck/XH1dkbdUuK/UdVX1Rv/936UH3QD0lbO3EIOTM6q3+IceOQ9zj/GiR2ppw9uRWOKXZCcWCmHU2C8Dl0LWCYnEEvcYcX7uCUSS3RcA9SMxOBJLpECdEiIFW0s4ljjZKAflLFOrstk17que996ztOWJ+tmpk3AzKwpMvuQRw8He71C/+ZutsUPm5XI873nokO3CgdNLlUvU/TE4l5YQmVDtyK1ADOCVrqP669viV6BS0HEthTdOf3tHf/+ikSo7yC1A0TGqwmca2roneWHXjvpaT3vjCp9E3uFTU/Gc9ZTsrFSxv6L5LMx7+SqPC6wMWef1+lj8e55Aakn9WoVfFtEHQFzJN4TcXMYjw2V0BONvj96O45Ioy0rJqNIaaUvkfatUe8vvXDvUsayEbEsX7trw8PR8V10fjZ+GyOhCCpkQf1u7pLkXoLujKRVpTf66xPB6lFU7H7gW8p48AOFo8qOgHx6pwfsaReYT1W/SJS6ACH1aYrZARS8G/b43p6C26vNiBm4QkWmqOlGRTePH93d68g3R7mNUbF2hvKxKuq+r6fde2Dh6s7WypKS9yh0t0fjv410t2wHyfsEICAG7067mh1QN0e4Ga+xTFGkxjssqYOpgjN4E+YmdQlw+Jbrmu/4KBxAz2MpHQm9Hc8nFkPw0bAkUOgTOBQ4CalpI1MRhezZNdpRZNjmxvrX7c6nObI+QG5JdXkxYjfszRT5WKE1EqYsmp6/paloJ2VdMJBb/a6mLC3wgLfLvwNWl5EphEBav62rJD7/U2KsovTx4fF1rd74QvZ3NT1nR50rIj3dk95Cb0hhNHgecM0SqwiHbvkCtfhPfYsq2KrdqRPqid4Vj8Tnl5OpiiWOLVbiHY3T+kLwxZV8NKlxVF01OK29pYSTcFp9pTNVqAKvpGrHyLOQcHuURRF/NiX4IOCGn92txQnljrbtbjDNKvd+CM9yr3OA6nBEi5GZlMt+VnEOSNwQuwwk9kUs/TMhPQNwqTug2KsS6mQ7JOqDLxAnN8+LVzSwDGgCs1Ygxci+5Mba1Mt2pcjbn5C4CfqCQMk5o8MG0metV+czQq8lzonS4yPOOI68hMuBPVTd9HcglueB60N9myyo1Cp/NxQ8onGKcUHaa23cvC9yrNNl5E4DnFbfVL5uzP05utdBayfciQ6yOxBKF+zJhY7879qhXuo7qB4i0xT+MyrMFZYuzAZhUNFX1ldxS7buK61Cfm0krNrGyzxGVuanOpru9cCSWeBYYkU+jyh0ifJYK1t2heKUXXXcV1bu9CgfobW/5E/CnERmJ3l9q5k4wxWei9iPV7t/5KhH+DLxTVm6Qt3fqQUPH4SIV914eBnlVkG+MVG84ISi8VGpDmeHz5YDcAEPfQaUQWK3oapCLCyS+JVbuV9E91tP3N5nQwE7JVD8Hun0vs7hFt1Y9LhPSp6uVaQYNq8p4RAuu8AnyoL8BAVS79lcDhjaQkmvfQzPSl1JNTZ31yeRJCu8vJ65VurXivAMCAgICAgLec+z3CZFjZic+EHL5j32SmbJb1Lk8v0oHNMzsHmtr7U/R7E7VEWTWD2wEeQvk2XTN6GWh/v77ZXAcXI4B0DcF1lvMM0e+8foTG444fLEq7xuZHUMxYr5mra1VkTMEJovyfhUtOQsJ4AxIm63SE4CzFKkr5lSi3sL8fiQ8K94iVkpsrxoZCi9mdu8+fd0DJ2yZdN6K2jFjapehJaeBK2UNMJmhW7pGqv9+Bpeq9xJdm1s4Gik95CafymDfc5We49ndTmZGtRtaLMOncwPKYct2G/sacUIFV5zKoRn3St827ZNHuaE+GOxKBe7ECd1UaX4m7Y5JixzioGFFz0eYweDrbsgUbkF70ulx1jG1Yu2RYuRslDnk9q/vMYVbrmxu5vOAf9LlKRUWGVdfdGGTU1VVcPl62BTtFoTbVXnEEbO+3wz0F9KBMsd39gepJfUlT50UR78SiSXGgczNRfgr/GepjqYvecudU6Jrxtewqz/e1TJQMKuhPAncHW5Nni3ZTY81ImwfoZ2dDW3dP7FqfweMExgYiX59LLlJB1f2vtnb0fydSvTCbYmtObUNint6X/tx5XbyAmWOv/zvQrS3qflKoH1IrHBfqqlprlfhDTO7xzrO7t/0M7rymS6gr7PpUZQFe2tdT3vjClH5/t7qAyD8vtIKH6rGNX0dlVU4HICW7qe+Lb5AVf6ttJQ+Wm2ZGe9qGWCB2HFzV3xu65basQjnCtKVchsv8bZ5TTpvRa2tsb9GOaWC67wNsrS3o3G+98CkVRdVidw43IJIa7ILUf9UchrYhLLQfxpX0WcKlSDSlviFKDOLlhAdDSBWHh1m99dVZQ659AKKhwJYW5XfLJo9EqbLQOspvHVM3wMtXc4eELOYaHZf3MqF09P9OjaqKgvGjt8xx9vxcmT05ZoxtbUPUWYvmo9DQOdFYqsbvYjcvoLimz0HqQIOR/iqf888pshRYytjFCYW+yNXOdboK341tWY+0Fxia9hYINPXEt7o6WQsDbnzeEV7ugPa0q01K0Vs8SNEai5A9DBEL46Y5MJe9FIQzS1e5A81hs/pHYXZ9p/AmSM0YXu1NfljTWec8WTo1aGHCUsiyAP+PfNFh45iHwc2lcjp40DYoEf5Y9UQE2UGwsGiMlax40COBo5h8IRtaEo8ceRaWA/ZDa3h1uRMhBajOkEFo8IEsUxGOAUYc0Arva+z6WFye+kLEYklpgKHAaB8vr41+U6qc+g2oWlzV1Rt3ZLppMTQrdDDpbBdrVkS72rOV8aGQw87kQLjdAk517ppd+j72sm8uab9uJe9YO5E75cKXb+3o+WnxWwDiMSS95FdqZtDVG/0eq++9qblwPLh8kdGX66pNdu/oOiPgFGOI5cB13npxe5rSzR+0G7D9w5opY8UNZzYEo1X+73ynTtrD0H0g6X0yj1cudxFTfK6QinlPPFIa+J0a+2DlDkiXAHNESd57+7Zq764fsnxm4sJ5Xq62yOxhAPcgvK1+lhyc5W1t5caseQ2U847sI5ca+IssuezC6KQ7+4E/ljl6qeGFyp5X/NrU2YnznJc/kD24wIjJjznhSONm7xJlU/tjX5vZ/NTkVj8apC7KdBThGPxOUbluGL6ip7gC8wa5YbOjcQSj6vKKmN4TWE7yi7BXeP/nIiGqu6RTPomwFH0pgEjX43E4k8J9FqRLQa2Y2W7lczTfu/+wLZ0o6epyrXlBeW5jK2ekeqqy296qI+tnurdgLVLmnsbZnV/Uq1dXuigQl00OU0cHXy4VATsISCHGghrhpNKfXIk0pZYLjp4SFFhm6Ivo+bbfZ1NjwL0drTcE2lNnIfw6T2sV3OBDvX+yzEOuFBEL/Rvx1YM9W3xs7yjXX2LI1sjscQmyK87HApykZIdj2j24gjOW6CHe6OU90L3/pfdTvrs9R1Ng3vmY8lvKXpduC1+Ue6wPj1LG1eFY4kZAo/hbezMYRx7KkPG0IOHUir6RowybtjDNFGyDtUi0CO8mynIM4ruUen7kAHUvxtGBZJjiotnkezupXxRD3BLr1okmczTpUSqVJ/v7Rh8v0ViiS+DXg8gKh3htuQ5OYeHvo7mZxtmxc+3VvY4dVKGrQopKXGMy0ec7FGsKkQPO3r2ixPWL2EzgMVulgILl8aRb6urRZ05NVyEcgXIc9YWPiYmRnWU1XXxrmPzjmddtPtEoBbhBjGhewrpDaTTO9d1Nb/hjzuglZ5zkCqerozE4vOAH/iiRovqgw1t3Wd6x6V6lrY8EW6Lx2rYVfD0KsLTYrPDPTW6zTWyaW26aW1Yumcg+lA5Gxzkwgz254KcCuCoVOezlsIdR8/Sxj0+HOSnPpY8XlFU2VZo92ohps1dUbX1Hb0RQJWNvRVO+4ajyVPeC907APWtycsUvdUXNUD2i1DjrNpl9bN6TveOBntdfkGUN1OdzXtuBm1NVmyLiGS86tWMedcOaQAQVafeSZzxzjtcL3BqpWrhaLwZMXNEdN67vrQqQkVPsp/c57c+yOBawePW6pVi5HGBD2QzZqPAuiL6hzE4Eri/t6P5oj3sbE2eJ7mWPvwTYKo0kVsnd5AGV3ShbyJmlUj2AwGqHEx2TX7I58jKlm/wU23bREgVlVNqyE7MDB0aChtRLbwlW6lG5GCfjvuut3RV9vo4To7lO3buPH/Dw9N3NsaSn3TRp4FDUQ5WBo8R/102wkQqt/P4Agcea0ZUzsFt+GNHoPcy3oOsHAxSuOwFmvV+r3QrMuCge7mcOhzprqlOt/Z2ZE/Ydnc0peqiyXOM0cWgVSCjpfwEyY5CkY5jd1hb3r9Qa9IYfY19VqZKEUV4TS0vGHgA1V1qSh+rzjGgsFGQN0R0pRUeLK8SEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ8H+R/wFb+TSV8XBDCAAAAABJRU5ErkJggg==',
-      };
-      break;
-    case 'dinersclub':
-      cardTypeIcon = {
-        uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAABQCAYAAAA0snrNAAAABmJLR0QA/wD/AP+gvaeTAAAKnklEQVR4nO2ceXRU1R3HP3eWzIQQskISBAxhVyKgYhUoOCzFatVWT61EBaxS7bHWtZW4joomaF2qdTuHHitgNYrHXU8KYUArioCN7EtYgsSEAAlkm8lkZm7/COEAaubN3DfzhnPe5x9yJvf9fr+8L3fefb/7+10wMTExMTExMTExMTExMTExMTExMTExMTExUUIYHYAuuD02fJZCLMEhhBiEIBeBE0RGdAZlIxIfkjqQVVgsO0hiI25XQN/AjeHUFf2+itMJid8B04DzgZ4x9tgCfAWyAitvM2/Kzhj7ixmnluhujw0fVyLkrcA4Too/yWphcFYyBZlOetitpCfb6AhKWvxBDrT62XHQS01Tu07BiDVI+TKtvtd5/mK9jMaFU0N0t9uCf9JMpHwIyO/62G4VTBucyS+GZOIqSOeMPinYLN3/SU3tAVZVN+HZ1ciHWw+ypb5NNbp64Ckc4jncLp+qsXiQ+KLPXX4OQrwEcmzXR/kZTm4b14+iUTn06ZmkZH7NviYWrK3ltW/qaA+EVExVI+VfKJ3ytlJAcSCBRZeCe1f8GSmfAJIA+qU5mDetgKJROdit+oZe09RO6cq9vLS6hmBIKliSS/Bb/shTroO6BacziSn63eUp2OxlCC4BsAjB7eP78fDUgfRMssbUdWVtCze9u42v9zWpmKlBcjmlk9fpFZeeJJ7od5f3wW7/GDgXoHeKnUVXncH0IZlxCyEQkjzmqeaR5XsIyahnfRuIWZS4lugZmx4kluj3LE3DYvGAGAMwKq8nn84eRV6q2nM7WpZsPMC1b21WedYHEWI2j7sW6xmXKokj+h2rknH4liEYBzAhP40PZ55FutNmaFieXY1cvmgDze3BaE0EkXJGIi3wLEYHcAyn7+9dghfmpiSE4ACuggzev64Qhy3qW2VFiIXcV3GennGpkBiiz/VcA8wB6J/mYOnvRyeE4F24CjJYcMVwFRNOQuId7i7vo1dMKhgvevGyLCzyWQCbRfDG1WeSE+G7964GLzsbvJrHf/VdU8Rf19eOzuGm8/pGdM1J9CMp6R8qBvTCeNGxPIkkG+CByfmMPz1N85W1zX6ue2szw55ezbe1LZqv++fa78l/4kse81TTEdS+On/2V0MYlt1D8/gfIOVvKV5+RfQG9MFY0Ys9w4FZAIOzkvnrxAGaL31zfT0jn/2axZX7CUSRTGnwdnD/0l2c9+JaNu5v1XSN02bhld8MQ6gtf5/m1k8cShYUMVZ0KYu7YnjmkiE4NS6W5q/cS1HZJhq8HcohVNa2cMFL61ha1aBp/KSB6fz6jN4qLk8nxXmDigFVjBP93s/yEMyAzvfxS4Zlabrs/qW7mFu+k+hzJj+kxR/ksoUbWLHrsKbxD07OV5vtgmLcHsNWqgbO9GARYAe4Z+IATTfxnY0HeHxFdUyi8QVCXPn6Rk0LwtF5PZk2WClD2I92LlIxoIJxokt5LUCa06bp63LfkXZmL9mi6ww/mQZvB7Pe1ubj+nPyFL2FDPuKN0b0ez/LA0YDXFXYh2R7+DDu+qSKFn/UWTHNfFF9hEWVdWHHXT4im1SHyuaPuIg7ViUrGIgaY0QPdVzY9ePFGp7lG/e38taG+lhGdALuZbvDbrQk2y1cODDKErxOnDjax6sYiBZjRLeICZ3/CCYNTA87/OXVNTEP6Xh2N/oo3xF+Ne8aFD72brHIyWoGonRrhFOkGAEwJCuZjOTuF7EhKXlzffxmeRf/rtwfdsz5/XupOQmJkWoGosOghZwcCjC8T/js1qb9bRxqU38fj5TP9xwJO2ZYb4XsHICQI9QMREf8Re98P+0LMCgz/Dpm9XdKFSxRU33YR22zv9sxmcl2MpPtKm4G4nbHXYP4i+6zpXJ0H1/LTpp+JcuR870G32lOpfItK21TU1QMREP8RbeGjjUl9NTwyqNHqjVaDrSG991LeQu4LVXRQMTEX3RBRHfJori7oYI1HnfHYo97LVj8RfeGmrt+bNGwp53dQ+mZqUTvlPB6NPlU29ts4VeMOhN/0f3eY6If1nDD+qcbswspBPTrFd63lr+hGyTOQHP4YfoSf9E7+74OAJo2N8YN0F5UoSdDs3qQndL9t0yDt4NGr5Lo+4zohDXoPV1sBdiqoY9scFYy/dLiP9snasgUbjug2AcnxUY1A9FhjOiCTQA7Dnk1zZSZY3JjHtLJzDo7vM+vVHMIltB6NQNRujXCKaHQZ9CZYl25O3zhwpyxfbGG6UbVk8LcFE21est3Nip6EksVDUSFMaIHAhWABPh0+6Gww/MznNysVokaESXTB4Ud09YR1PQfthtaafb9V8VAtBgj+t+m1yP5EqBsfT3ejvBtQ49OK4i4NDoaLhuRral06/3NB1W6XgDeM+owAyMLI18DOOIL8P6W8F29Gck2lhSNJCmGGZP8DKfmpoZ/fRO+0KJ7Qq8oGogaA8ulgmVAM0DpympNJUoT8tN44bKhMcnSZfWw8+HMs+gd5jUNOitotVbP/gTrKZn6uYoBFYwTff60Iwj5IsC3tS18tE1bD/+NY/NYdNUIXQ8l6NvLgefGMYzM0bb38XDFbtVavQeUrlbE4Lp3+1NAK8CdH1fh09gSXDQqhxVzxjBUpdvkKJcOz2bdLedSmKtN8GVVjby3WeGQCckqSiZ/EL0BdYwVvWTiAeARgKpDXuav3Kv50nED0qi8dSwPTcmPak97RJ8evHH1mXwws5Bcjf3v3o4Qt3ywPWJfx+FHWm9WMaAHxvenuz022uUaYLTNIvDcOIYJ+ZGlXpvbg7T6g5rFqzrkpSDTGfHaYM67W1mwpjaia05A8iClkx+N3oA+GN/A6HYFCFlnAm2BkGRG2aawFSsnk+qwahYcOlO7kQq+8H91aoJDBU5RomJAL4wXHWD+pA1IcRt0NjVMf7VSdSNDV5bvbOQP725TMbEHv7g6UY4ZTQzRAUpdC5A8A7ChrpVLF65PCOGX7+w8fkTh3Jk6CE1PpCPGjH+mn4AUFHte5Wj7cmFuCp/OHsVpGva1Y0HZ+npmLdmiIng9hFyUTN2sZ1yqJM5MB0BIqg7eALwAnTN+zPNrNOXn9SQQkjxcsYeiMqWTpaqwMjHRBIeEm+nHUVwxF8Q8wGoRgj9dcBqPThtIL0dsO3zX1jRz83vbWFejVNBSjrTPoPTnqttwMSFxRQeY67kQIRcDpwHkpSbxyNQCZp6do3sOfu9hH4+vqGbB2lqVY0LbkeIhnCufxO1WOmg2liS26AB3ebJJkqXA9Rx9HPVPc3Db+P5cMyonole1H+PLvUdYsKaWxZX78QeVdPoPQevtPDFpi1JAcSDxRe+iePnPQJSAdHV9ZLUIpgzKOHb0d2FOz7A5+cO+AF9UH6GiqvPo76pD2k+l+gnWgXBT4vpI1VC8OHVE7+I+z/lI7kTKSwHn8b+yWwUDMzoP+U912MhItuEPhGj2B6lv6WD7wTb2t0SW+PkJ/EhRDjxHqWuZHgbjyaknehduTzrtXImQvwQmdR1LFjMEB4GVSFmOo+Md3Bcp7a0ayakr+glIQfGKYcBwkEOR5GIhBUk6IsJ8q5QSwWEkLQjqkGIHVrmFea7tIGJ4+ImJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYnJKcP/AbggaBuvdl+QAAAAAElFTkSuQmCC',
-      };
-      break;
-    case 'discover':
-      cardTypeIcon = {
-        uri: 'data:image/png;base64,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',
-      };
-      break;
-    case 'jcb':
-      cardTypeIcon = {
-        uri: 'data:image/png;base64,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',
-      };
-      break;
-    case 'maestro':
-      cardTypeIcon = {
-        uri: 'data:image/png;base64,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',
-      };
-      break;
-    case 'mastercard':
-      cardTypeIcon = {
-        uri: 'data:image/png;base64,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',
-      };
-      break;
-    case 'unionpay':
-      cardTypeIcon = {
-        uri: 'data:image/png;base64,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',
-      };
-      break;
-    case 'visa':
-      cardTypeIcon = {
-        uri: 'data:image/png;base64,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',
-      };
-      break;
-    case 'visaelectron':
-      cardTypeIcon = {
-        uri: 'data:image/png;base64,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',
-      };
-      break;
-  }
-
-  return (
-    <View style={styles.container}>
-      <ImageBackground
-        source={require('../../assets/creditCard.png')}
-        style={styles.creditCard}
-        imageStyle={styles.border}>
-        <View style={styles.imageContainer}>
-          {cardTypeIcon && (
-            <View style={styles.cardTypeIconContainer}>
-              <Image
-                source={{uri: cardTypeIcon?.uri}}
-                style={styles.cardType}
-                resizeMode="contain"
-              />
-            </View>
-          )}
-          <Text style={styles.number}>
-            {'**** **** **** ' + formatedNumber.substr(-4)}
-          </Text>
-          <View style={styles.row}>
-            <View>
-              <Text style={styles.label}>CARDHOLDER NAME</Text>
-              <Text style={styles.text}>{name}</Text>
-            </View>
-            <View>
-              <Text style={styles.label}>VALID</Text>
-              <Text style={styles.text}>
-                {creditcardutils.formatCardExpiry(expiration.toString())}
-              </Text>
-            </View>
-          </View>
-        </View>
-      </ImageBackground>
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    elevation: 4,
-  },
-  creditCard: {
-    width: widthPercentageToDP('92%'),
-    height: 220,
-    alignSelf: 'center',
-  },
-  imageContainer: {
-    paddingHorizontal: 13,
-    height: 210,
-    width: widthPercentageToDP('92%'),
-  },
-  border: {
-    borderRadius: 20,
-  },
-  cardType: {
-    height: 32,
-    width: 32 * (132 / 80),
-  },
-  cardTypeIconContainer: {
-    justifyContent: 'center',
-    height: 27,
-    width: 27 * (125 / 80),
-    alignItems: 'center',
-    alignSelf: 'flex-end',
-    margin: 10,
-  },
-  number: {
-    color: '#f6f6f6',
-    fontFamily: 'Roboto-Light',
-    fontSize: 33,
-    textAlign: 'center',
-    top: 25,
-  },
-  row: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    alignItems: 'center',
-    top: 60,
-  },
-  label: {
-    color: '#dbdbdb',
-    fontFamily: 'Roboto-Light',
-    fontSize: 15,
-  },
-  text: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#dbdbdb',
-  },
-});
-
-export default Purchases;
diff --git a/src/Modules/IconText.js b/src/Modules/IconText.js
deleted file mode 100644
index 7c43562..0000000
--- a/src/Modules/IconText.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import React from 'react';
-import {Pressable, StyleSheet, Text} from 'react-native';
-import Icon from 'react-native-vector-icons/Ionicons';
-
-const ModalOption = ({icon, text, onPress, iconColor}) => {
-  return (
-    <Pressable style={styles.row} onPress={onPress}>
-      <Icon name={icon} color={iconColor ? iconColor : '#202020'} size={26} />
-      <Text style={styles.visibilityText}>{text}</Text>
-    </Pressable>
-  );
-};
-
-const styles = StyleSheet.create({
-  visibilityText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    marginHorizontal: 6,
-  },
-  row: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginVertical: 4,
-    paddingHorizontal: 10,
-  },
-});
-
-export default ModalOption;
diff --git a/src/Modules/Loading.js b/src/Modules/Loading.js
deleted file mode 100644
index be22237..0000000
--- a/src/Modules/Loading.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import React from 'react';
-import {View, ActivityIndicator, StyleSheet} from 'react-native';
-
-const Loader = props => {
-  return (
-    <View style={styles.container}>
-      <ActivityIndicator size="large" color="#212121" />
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    justifyContent: 'center',
-    alignItems: 'center',
-    backgroundColor: '#fff',
-  },
-});
-
-export default Loader;
diff --git a/src/Modules/Texts.js b/src/Modules/Texts.js
deleted file mode 100644
index efedf49..0000000
--- a/src/Modules/Texts.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import React from 'react';
-import {StyleSheet, Text} from 'react-native';
-import {numberFormat, numberSeperator} from '../Utils/Util';
-
-const KText = props => {
-  const {text, style, prefix, suffix} = props;
-  return (
-    <Text style={[styles.text, style]} {...props}>
-      {prefix}
-      {numberFormat(Number(text))}
-      {suffix}
-    </Text>
-  );
-};
-
-const AmountText = props => {
-  const {text, style} = props;
-  return (
-    <Text style={[styles.text, style]} {...props}>
-      ${numberSeperator(Number(text))}
-    </Text>
-  );
-};
-
-const styles = StyleSheet.create({
-  text: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-  },
-});
-
-export {KText, AmountText};
diff --git a/src/Modules/index.js b/src/Modules/index.js
deleted file mode 100644
index dcc81c5..0000000
--- a/src/Modules/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import Button from './Button';
-import BottomModal from './BottomModal';
-import IconText from './IconText';
-import Loader from './Loading';
-import CoverVideo from './CoverVideo';
-import Alert from './Alert';
-import CreditCard from './CreditCard';
-import {KText, AmountText} from './Texts';
-
-export {
-  Button,
-  BottomModal,
-  IconText,
-  Loader,
-  CoverVideo,
-  Alert,
-  CreditCard,
-  KText,
-  AmountText,
-};
diff --git a/src/Screens/About.js b/src/Screens/About.js
deleted file mode 100644
index fdfd820..0000000
--- a/src/Screens/About.js
+++ /dev/null
@@ -1,161 +0,0 @@
-import React from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  Pressable,
-  Linking,
-  ScrollView,
-} from 'react-native';
-import ChannelData from '../Utils/Channel.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-
-const SocialLink = props => {
-  const {title, iconSize, url, icon, type, iconColor} = props;
-  return (
-    <Pressable
-      style={styles.socialContainer}
-      type="logo"
-      onPress={() => url && Linking.openURL(url)}>
-      <Icon
-        name={
-          type === 'url'
-            ? 'globe-outline'
-            : type === 'logo'
-            ? `logo-${icon}`
-            : icon
-        }
-        color={iconColor ? iconColor : '#212121'}
-        size={iconSize ? iconSize : 20}
-      />
-      <Text
-        // eslint-disable-next-line react-native/no-inline-styles
-        style={{
-          ...styles.link,
-          color: type === 'logo' || type === 'url' ? '#1568d6' : '#212121',
-        }}>
-        {title}
-      </Text>
-    </Pressable>
-  );
-};
-
-const AboutScreen = props => {
-  const data = ChannelData[0];
-
-  const SocialAccounts = accounts => {
-    const {facebook, twitter, instagram, website} = accounts;
-    return (
-      <View>
-        {twitter && (
-          <SocialLink
-            title="Twitter"
-            url={twitter}
-            icon={'twitter'}
-            iconColor="#1DA1F2"
-            type="logo"
-          />
-        )}
-        {website && (
-          <SocialLink
-            title="Website"
-            icon={'globe-outline'}
-            type="url"
-            url={website}
-            iconColor="#212121"
-          />
-        )}
-        {facebook && (
-          <SocialLink
-            title="Facebook"
-            url={facebook}
-            icon={'facebook'}
-            iconColor="#1877f2"
-            type="logo"
-          />
-        )}
-        {instagram && (
-          <SocialLink
-            title="Instagram"
-            url={instagram}
-            type="logo"
-            icon={'instagram'}
-            iconColor="#fb3958"
-          />
-        )}
-      </View>
-    );
-  };
-
-  return (
-    <ScrollView style={styles.container}>
-      <View style={styles.contentContainer}>
-        <Text style={styles.heading}>Description</Text>
-        <Text style={styles.content}>{data?.description}</Text>
-        <View style={styles.space} />
-        <Text style={styles.heading}>Links</Text>
-        {SocialAccounts(data?.links)}
-        <View style={styles.space} />
-        <Text style={styles.heading}>More Info</Text>
-        <SocialLink
-          title="yourlink.com/dummychannel"
-          iconSize={28}
-          type="url"
-          url={'https://codecanyon.net/user/anwersolangi/portfolio'}
-        />
-        <SocialLink
-          title={data?.moreInfo?.location}
-          icon="earth-outline"
-          iconSize={28}
-        />
-        <SocialLink
-          icon="information-circle-outline"
-          title={new Date(data?.moreInfo?.joined).toDateString()}
-          iconSize={28}
-        />
-        <SocialLink
-          title={`${data?.moreInfo?.totalViews} views`}
-          icon="trending-up-outline"
-          iconSize={28}
-        />
-      </View>
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    backgroundColor: '#fff',
-    flex: 1,
-  },
-  contentContainer: {
-    marginHorizontal: 15,
-    marginTop: 8,
-  },
-  heading: {
-    fontFamily: 'Roboto-Black',
-    fontSize: 18,
-    color: '#212121',
-    marginVertical: 10,
-  },
-  content: {
-    color: '#2c2c2c',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-  },
-  space: {
-    height: 25,
-  },
-  socialContainer: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginVertical: 5,
-  },
-  link: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    marginLeft: 14,
-  },
-});
-
-export default AboutScreen;
diff --git a/src/Screens/AboutUs.js b/src/Screens/AboutUs.js
deleted file mode 100644
index f3593e2..0000000
--- a/src/Screens/AboutUs.js
+++ /dev/null
@@ -1,818 +0,0 @@
-import React from 'react';
-import {StyleSheet, useWindowDimensions} from 'react-native';
-import RenderHTML from 'react-native-render-html';
-import {ScrollView} from 'react-native-gesture-handler';
-
-const AboutUs = props => {
-  const {width} = useWindowDimensions();
-  const source = {
-    html: `<div
-  style="
-    box-sizing: border-box;
-    width: ${width}px;
-    flex-grow: 1;
-    margin-right: 20px;
-    overflow: hidden;
-    background-color: #ffffff;
-    color: #333333;">
-  <main style="box-sizing: border-box; background: ">
-    <section
-      style="
-        box-sizing: border-box;
-        position: relative;
-        margin-right: 20px;
-        align-self: center;
-        border-color: #e8e8e8;
-      "
-      data-hide-row=" uvc_hidden-lg  uvc_hidden-ml  uvc_hidden-md "
-      data-rtl="false"
-      data-row-effect-mobile-disable="true"
-      data-img-parallax-mobile-disable="true"
-    >
-                          <img
-                          style="
-                          max-width: 300;
-                          border-radius: inherit;
-                            object-fit: contain;
-                            "
-                          src="https://www.nativebrains.com/storage/2020/12/about-avatar.png"
-                          width="auto"
-                          height="250"
-                          loading="lazy"
-                        />
-                
-    </section>
-    <section
-      style="
-        box-sizing: border-box;
-        position: relative;
-        margin-right: 20px;
-        border-color: #e8e8e8;
-      "
-      data-hide-row=" uvc_hidden-lg  uvc_hidden-ml  uvc_hidden-md "
-      data-rtl="false"
-      data-row-effect-mobile-disable="true"
-    >
-      <div
-        style="
-          box-sizing: border-box;
-          overflow: hidden;
-          width: ${width}px;
-          background-position: center center;
-          inset: 0px;
-          z-index: 0;
-        " data-bg-override="0">
-        &nbsp;
-      </div>
-        <div
-          class="g-cols vc_row type_default valign_top"
-          style="
-            box-sizing: border-box;
-            display: flex;
-            flex-wrap: wrap;
-            position: relative;
-            margin: 0px -1.5rem;
-          ">
-          <div
-            class="vc_col-sm-12 wpb_column vc_column_container"
-            style="
-              box-sizing: border-box;
-              display: flex;
-              flex-direction: column;
-              position: relative;
-              border-color: #e8e8e8;
-              width: ${width - 10}px;
-              margin: 0px 10px 0px 0px;
-            ">
-            <div style="
-                box-sizing: border-box;
-                display: flex;
-                flex-direction: column;
-                flex-grow: 1;
-                flex-shrink: 0;
-                border-color: #e8e8e8;
-                padding-left: 1.5rem;
-                padding-right: 1.5rem;
-              ">
-              <div class="wpb_wrapper" style="box-sizing: border-box">
-                <div
-                  class="wpb_text_column"
-                  style="box-sizing: border-box; margin-bottom: 1.5rem">
-                  <div class="wpb_wrapper" style="box-sizing: border-box">
-                    <h1 style="
-                        box-sizing: border-box;
-                        font-family: Touche_nb, sans-serif;
-                        line-height: 1.2;
-                        margin: 0px 20px 0px 0px;
-                        padding-top: 0px;
-                        font-weight: 100;
-                        font-size: 35px !important;
-                        letter-spacing: 0px;
-                        color: #b42cf5;
-                      ">
-                      <strong style="box-sizing: border-box">CODE LOVER!</strong>
-                    </h1>
-                  </div>
-                </div>
-                <div style="box-sizing: border-box">
-                  <div style="box-sizing: border-box">
-                    <p style="box-sizing: border-box; margin: 0px 20px 0px 0px ">
-                      I am a code lover/programmer from
-                      Karachi, Sindh, Pakistan. and i love to provide apps and
-                      webs solution to enterprise or individuals!
-                    </p>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-      </div>
-    </section>
-    <section
-      style="
-        box-sizing: border-box;
-        position: relative;
-        margin-right: 20px;
-        border-color: #e8e8e8;
-      "
-    >
-      <div style="box-sizing: border-box">
-                <div
-                  style="
-                    box-sizing: border-box;
-                    display: flex;
-                    flex-wrap: wrap;
-                    position: relative;
-                    margin: 0px -1.5rem;
-                  "
-                >
-                  <div
-                    style="
-                      box-sizing: border-box;
-                      display: flex;
-                      flex-direction: column;
-                      position: relative;
-                      border-color: #e8e8e8;
-                      width: 483.2px;
-                      margin: 0px 0px 1.5rem;
-                    "
-                  >
-                    <div
-                    
-                      style="
-                        box-sizing: border-box;
-                        display: flex;
-                        flex-direction: column;
-                        flex-grow: 1;
-                        flex-shrink: 0;
-                        border-color: #e8e8e8;
-                        padding-left: 1.5rem;
-                        padding-right: 1.5rem;
-                        justify-content: center;
-                      "
-                    >
-                      <div style="box-sizing: border-box">
-                        <div
-                          style="
-                            box-sizing: border-box;
-                            text-align: center;
-                            border-color: #e8e8e8;
-                            max-width: 100%;
-                          "
-                        >
-                          <div
-                            style="
-                              box-sizing: border-box;
-                              border-radius: inherit;
-                              background: inherit;
-                              border-color: inherit !important;
-                              color: inherit !important;
-                            "
-                          >
-                            <img
-                            style="max-width: ${width}px;"
-                              src="https://www.nativebrains.com/storage/2020/12/story-behind-us.png"
-                              width="${width}px"
-                              height="300"
-                              loading="lazy"
-                            />
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                  <div
-                    style="
-                      box-sizing: border-box;
-                      display: flex;
-                      flex-direction: column;
-                      position: relative;
-                      border-color: #e8e8e8;
-
-                      margin: 0px;
-                    "
-                  >
-                    <div
-                      style="
-                        box-sizing: border-box;
-                        display: flex;
-                        flex-direction: column;
-                        flex-grow: 1;
-                        flex-shrink: 0;
-                        border-color: #e8e8e8;
-                        padding-left: 1.5rem;
-                        padding-right: 1.5rem;
-                        justify-content: center;
-                      "
-                    >
-                      <div style="box-sizing: border-box">
-                        <div
-                     
-                          style="box-sizing: border-box; margin-bottom: 1.5rem"
-                        >
-                        </div>
-                      </div>
-                    </div>
-
-          </div>
-        </div>
-      </div>
-    </section>
-    <section
-      style="
-        box-sizing: border-box;
-        padding: 1.5rem;
-        position: relative;
-        margin: 0px auto;
-        border-color: #e8e8e8;
-      "
-    >
-      <div
-        style="
-          box-sizing: border-box;
-          position: relative;
-          margin: 0px auto;
-          width: 441.2px;
-          max-width: 1280px;
-        "
-      >
-        <div
-          class="g-cols vc_row type_default valign_top"
-          style="
-            box-sizing: border-box;
-            display: flex;
-            flex-wrap: wrap;
-            position: relative;
-            margin: 0px -1.5rem;
-          "
-        >
-          <div
-            class="vc_col-sm-12 wpb_column vc_column_container"
-            style="
-              box-sizing: border-box;
-              display: flex;
-              flex-direction: column;
-              position: relative;
-              border-color: #e8e8e8;
-              width: ${width - 10}px;
-              margin: 0px;
-            "
-          >
-            <div
-              class="vc_column-inner"
-              style="
-                box-sizing: border-box;
-                display: flex;
-                flex-direction: column;
-                flex-grow: 1;
-                flex-shrink: 0;
-                border-color: #e8e8e8;
-                padding-left: 1.5rem;
-                padding-right: 1.5rem;
-              "
-            >
-              <div class="wpb_wrapper" style="box-sizing: border-box">
-                <div
-                  class="wpb_text_column"
-                  style="box-sizing: border-box; margin-bottom: 1.5rem"
-                >
-                  <div class="wpb_wrapper" style="box-sizing: border-box">
-                    <h1
-                      style="
-                        box-sizing: border-box;
-                        font-family: Touche_nb, sans-serif;
-                        line-height: 1.2;
-                        margin: 0px 20px 0px 0px;
-                        padding-top: 0px;
-                        font-weight: 100;
-                        font-size: 35px !important;
-                        letter-spacing: 0px;
-                        color: #b42cf5;
-                        text-align: center;
-                      "
-                    >
-                      WHAT&nbsp;<strong style="box-sizing: border-box"
-                        >MATTERS</strong
-                      >&nbsp;TO US
-                    </h1>
-                  </div>
-                </div>
-                <div
-                  class="ult-spacer spacer-607b0eb61a0b0"
-                  style="box-sizing: border-box; height: 32px; clear: both"
-                  data-height="32"
-                  data-height-tab="32"
-                >
-                  &nbsp;
-                </div>
-                <div
-                  class="w-image align_center"
-                  style="
-                    box-sizing: border-box;
-                    text-align: center;
-                    border-color: #e8e8e8;
-                    max-width: ${width}px;
-                  "
-                >
-                  <div
-                    class="w-image-h"
-                    style="
-                      box-sizing: border-box;
-                      border-radius: inherit;
-                      background: inherit;
-                      border-color: inherit !important;
-                      color: inherit !important;
-                    "
-                  >
-                    <img
-                      style="
-                        box-sizing: border-box;
-                        max-width: ${width};
-                        vertical-align: top;
-                        border-radius: inherit;
-                        margin-right: 22px;
-                      "
-                      src="https://www.nativebrains.com/storage/2020/12/matters-ranking-1.png"
-                      alt=""
-                      width="auto"
-                      height="230"
-                      loading="lazy"
-                    />
-                  </div>
-                </div>
-                <div
-                  class="ult-spacer spacer-607b0eb61a371"
-                  style="box-sizing: border-box; height: 32px; clear: both"
-                  data-id="607b0eb61a371"
-                  data-height="32"
-                  data-height-tab="32"
-                  data-height-tab-portrait=""
-                >
-                  &nbsp;
-                </div>
-                <div
-                  class="g-cols wpb_row type_default valign_top vc_inner"
-                  style="
-                    box-sizing: border-box;
-                    display: flex;
-                    flex-wrap: wrap;
-                    position: relative;
-                    margin: 0px -1.5rem;
-                  ">
-                  <div
-                    class="vc_col-sm-12 wpb_column vc_column_container"
-                    style="
-                      box-sizing: border-box;
-                      display: flex;
-                      flex-direction: column;
-                      position: relative;
-                      border-color: #e8e8e8;
-                      width: ${width}px;
-                      margin: 0px;"
-                      align-items: 'center';
-                      justify-content: 'center';
-                  >
-                    <div
-                      class="vc_column-inner"
-                      style="
-                        box-sizing: border-box;
-                        display: flex;
-                        flex-direction: column;
-                        flex-grow: 1;
-                        flex-shrink: 0;
-                        border-color: #e8e8e8;
-                        padding-left: 1.2rem;
-                        padding-right: 1.3rem;
-                        margin-right: 30px;
-                      "
-                    >
-                      <div class="wpb_wrapper" style="box-sizing: border-box">
-                        <div
-                          class="wpb_text_column"
-                          style="box-sizing: border-box">
-                          <div
-                            class="wpb_wrapper"
-                            style="box-sizing: border-box">
-                            <p
-                              style="
-                                box-sizing: border-box;
-                                margin: 0px;
-                                text-align: center;
-                              ">
-                              <span
-                                style="
-                                  color: #b42cf5;
-                                  font-family: Touche_nb, sans-serif;
-                                  font-size: 32px;
-                                  letter-spacing: 0px;
-                                ">Your satisfication is all that Matter to me.</span
-                              >
-                            </p>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </section>
-  </main>
-</div>
-<footer
-  style="
-    box-sizing: border-box;
-    overflow: hidden;
-    margin: 0px auto;
-    width: ${width}px;
-    background: #ffffff;
-    color: #333333;
-  "
->
-  <section
-    style="
-      box-sizing: border-box;
-      padding-left: 1.5rem;
-      padding-right: 1.5rem;
-      position: relative;
-      margin: 0px auto;
-      border-color: #e8e8e8;
-    "
-  >
-    <div
-      style="
-        box-sizing: border-box;
-        position: relative;
-        margin: 0px auto;
-        width: ${width - 30}px;
-        max-width: ${width}px;
-      "
-    >
-      <div
-        style="
-          box-sizing: border-box;
-          display: flex;
-          flex-wrap: wrap;
-          position: relative;
-          margin: 0px -1.5rem;
-        "
-      >
-        <div
-          class="vc_col-sm-12 wpb_column vc_column_container"
-          style="
-            box-sizing: border-box;
-            display: flex;
-            flex-direction: column;
-            position: relative;
-            border-color: #e8e8e8;
-            width: ${width - 10}px;
-            margin: 0px;
-          "
-        >
-          <div
-            class="vc_column-inner"
-            style="
-              box-sizing: border-box;
-              display: flex;
-              flex-direction: column;
-              flex-grow: 1;
-              flex-shrink: 0;
-              border-color: #e8e8e8;
-              padding-left: 1.5rem;
-              padding-right: 1.5rem;
-            "
-          >
-            <div class="wpb_wrapper" style="box-sizing: border-box">
-              <div
-                class="wpb_text_column"
-                style="box-sizing: border-box; margin-bottom: 1.5rem"
-              >
-                <div class="wpb_wrapper" style="box-sizing: border-box">
-                  <h1
-                    style="
-                      box-sizing: border-box;
-                      font-family: Touche_nb, sans-serif;
-                      line-height: 1.2;
-                      margin: 0px;
-                      padding-top: 0px;
-                      font-weight: 100;
-                      font-size: 35px !important;
-                      letter-spacing: 0px;
-                      color: #b42cf5;
-                      text-align: center;
-                    "
-                  >
-                    Reach Out To <strong>ME</strong>
-                  </h1>
-                </div>
-              </div>
-              <div style="box-sizing: border-box; margin-bottom: 1.5rem">
-                <div class="wpb_wrapper" style="box-sizing: border-box">
-                  <p
-                    style="
-                      box-sizing: border-box;
-                      margin: 0px;
-                      text-align: center;
-                      font-size: 15px
-                    "
-                  >
-                    I thrilled at the prospect of working with you. Please reach
-                    out to me only if you are looking for the brightest and most
-                    innovative ideas on the digital globe right now.
-                  </p>
-                </div>
-              </div>
-
-                <div
-                  style="
-                    box-sizing: border-box;
-                    display: flex;
-                    flex-direction: column;
-                    position: relative;
-                    border-color: #e8e8e8;
-                    width: ${width - 30}px;
-                    justify-contet: center;
-                    margin: 0px 0px 1.5rem;
-                  "
-                >
-                  <div
-                    style="
-                      box-sizing: border-box;
-                      display: flex;
-                      flex-direction: column;
-                      flex-grow: 1;
-                      flex-shrink: 0;
-                      border-color: #e8e8e8;
-                      padding-right: 1.5rem;
-                    "
-                  >
-                    <div style="box-sizing: border-box">
-                      <div
-                        style="
-                          box-sizing: border-box;
-                          text-align: center;
-                          position: relative;
-                          justify-content: center;
-                          display: flex;
-                          align-items: center;
-                        "
-                      >
-                        <div
-                          style="box-sizing: border-box"
-                        >
-                          <p
-                            style="
-                              box-sizing: border-box;
-                              margin: -0.2em 0px 0px;
-                              padding: 0px 0px 0.5em;
-                              font-size: 17px;
-                              transition: color 0.3s ease 0s;
-                            "
-                          >
-                            GIVE ME A RING
-                          </p>
-                            <p
-                              style="
-                                box-sizing: border-box;
-                                margin: 0px;
-                                font-size: 14px;
-                              "
-                            >
-                              +92-321-2325161
-                            </p>
-                          </div>
-                      </div>
-                    </div>
-                </div>
-                <div
-                  class="vc_col-sm-4 wpb_column vc_column_container"
-                  style="
-                    box-sizing: border-box;
-                    display: flex;
-                    flex-direction: column;
-                    position: relative;
-                    border-color: #e8e8e8;
-                    width: ${width - 30}px;
-                    margin: 0px 0px 1.5rem;
-                  "
-                >
-                  <div
-                    class="vc_column-inner"
-                    style="
-                      box-sizing: border-box;
-                      display: flex;
-                      flex-direction: column;
-                      flex-grow: 1;
-                      flex-shrink: 0;
-                      align-items: center;
-                      border-color: #e8e8e8;
-                      padding-left: 1.5rem;
-                      padding-right: 1.5rem;
-                    "
-                  >
-                    <div class="wpb_wrapper" style="box-sizing: border-box">
-                      <div
-                        class="
-                          w-iconbox
-                          iconpos_right
-                          style_default
-                          color_custom
-                          align_center
-                        "
-                        style="
-                          box-sizing: border-box;
-                          text-align: center;
-                          position: relative;
-                          justify-content: center;
-                          display: flex;
-                          align-items: flex-start;
-                        "
-                      >
-                        <div
-                          class="w-iconbox-meta"
-                          style="box-sizing: border-box"
-                        >
-                          <p
-                            class="w-iconbox-title"
-                            style="
-                              box-sizing: border-box;
-                              margin: -0.2em 0px 0px;
-                              padding: 0px 0px 0.5em;
-                              font-size: 16px;
-                              transition: color 0.3s ease 0s;
-                            "
-                          >
-                            WRITE TO ME
-                          </p>
-                          <div
-                            class="w-iconbox-text"
-                            style="box-sizing: border-box"
-                          >
-                            <p
-                              style="
-                                box-sizing: border-box;
-                                margin: 0px;
-                                font-size: 14px;
-                              "
-                            >
-                              anwerthesolangi@gmail.com
-                            </p>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div
-                  class="vc_col-sm-4 wpb_column vc_column_container"
-                  style="
-                    box-sizing: border-box;
-                    display: flex;
-                    flex-direction: column;
-                    position: relative;
-                    border-color: #e8e8e8;
-                    width: ${width - 30}px;
-                    margin: 0px;
-                  "
-                >
-                  <div
-                    style="
-                      box-sizing: border-box;
-                      display: flex;
-                      flex-direction: column;
-                      flex-grow: 1;
-                      flex-shrink: 0;
-                      border-color: #e8e8e8;
-                      padding-left: 1.5rem;
-                      align-items: center;
-                      padding-right: 1.5rem;
-                    "
-                  >
-                    <div class="wpb_wrapper" style="box-sizing: border-box">
-                      <div
-                        style="
-                          box-sizing: border-box;
-                          text-align: center;
-                          position: relative;
-                          justify-content: center;
-                          display: flex;
-                          align-items: flex-start;
-                        "
-                      >
-                        <div
-                          
-                          style="
-                            box-sizing: border-box;
-                            font-family: Touche_nb, sans-serif;
-                            font-size: 14px;
-                          "
-                        >
-                          <p
-                            
-                            style="
-                              box-sizing: border-box;
-                              margin: -0.2em 0px 0px;
-                              padding: 0px 0px 0.5em;
-                              font-size: 16px;
-                              transition: color 0.3s ease 0s;
-                            "
-                          >
-                            WHATSAPP
-                          </p>
-                          <div
-                            class="w-iconbox-text"
-                            style="box-sizing: border-box"
-                          >
-                            <p
-                              style="
-                                box-sizing: border-box;
-                                margin: 0px;
-                                font-size: 14px;
-                              "
-                            >
-                              +92-321-2325161
-                            </p>
-                          </div>
-                        </div>
-                        <div
-                          style="
-                            box-sizing: border-box;
-                            display: inline-flex;
-                            align-items: center;
-                            justify-content: center;
-                            flex-shrink: 0;
-                            font-size: 2rem;
-                            max-width: 100%;
-                            position: relative;
-                            z-index: 1;
-                            transition: background 0.3s ease 0s,
-                              color 0.3s ease 0s, box-shadow 0.1s ease 0s;
-                            line-height: 1;
-                            margin-left: calc(15px + 0.2em);
-                            color: #30c737;
-                            width: 1.1em;
-                            background: none !important;
-                            box-shadow: none !important;
-                          "
-                        >
-                          &nbsp;
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </section>
-</footer>
-    
-`,
-  };
-
-  return (
-    <ScrollView
-      style={styles.container}
-      contentContainerStyle={{...styles.content, width: width}}>
-      <RenderHTML source={source} contentWidth={width} />
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flexGrow: 1,
-  },
-  content: {
-    flexGrow: 1,
-    alignSelf: 'center',
-  },
-});
-
-export default AboutUs;
diff --git a/src/Screens/AboutUs_2.js b/src/Screens/AboutUs_2.js
deleted file mode 100644
index de93770..0000000
--- a/src/Screens/AboutUs_2.js
+++ /dev/null
@@ -1,188 +0,0 @@
-import React from 'react';
-import {
-  View,
-  Linking,
-  Text,
-  StyleSheet,
-  ScrollView,
-  Pressable,
-} from 'react-native';
-import {KText} from '../Modules';
-import Icon from 'react-native-vector-icons/Ionicons';
-
-const RowComp = props => {
-  const {count, desc} = props;
-  return (
-    <View style={styles.rowComp}>
-      <KText style={styles.counter} text={count} suffix={'+'} />
-      <Text numberOfLines={2} style={styles.option}>
-        {desc}
-      </Text>
-    </View>
-  );
-};
-
-const AboutComp = props => {
-  return (
-    <ScrollView
-      style={styles.container}
-      contentContainerStyle={styles.contentContainer}>
-      <Text style={styles.heading}>About us</Text>
-      <Text style={styles.headingDesc}>
-        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
-        tempor incididunt ut labore et dolore magna aliqua.
-      </Text>
-      <View style={styles.card}>
-        <Text style={styles.cardText}>Videos for all</Text>
-      </View>
-      <View style={styles.row}>
-        <RowComp count={200000000} desc="Users" />
-        <RowComp count={1600000} desc="Paid subscribers" />
-      </View>
-      <View style={styles.row}>
-        <RowComp count={100000000} desc="Total videos" />
-        <RowComp count={154000} desc="New videos uploaded daily" />
-      </View>
-      <View style={styles.paraContainer}>
-        <Text style={styles.leftHeading}>The story behind</Text>
-        <Text style={styles.para}>
-          Lorem ipsum dolor sit amet, consectetur adipiscing 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. Duis aute irure dolor in
-          reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
-          pariatur.
-        </Text>
-      </View>
-      <View style={styles.paraContainer}>
-        <Text style={styles.rightHeading}>Created with love</Text>
-        <Text style={styles.para}>
-          Lorem ipsum dolor sit amet, consectetur adipiscing 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. Duis aute irure dolor in
-          reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
-          pariatur.
-        </Text>
-      </View>
-      <View style={styles.footer}>
-        <Text style={styles.heading}>Reach out to me</Text>
-        <View style={styles.footerRow}>
-          <Pressable onPress={() => Linking.openURL('tel: +923212325161')}>
-            <Icon name="call-outline" color="#ffba00" size={38} />
-          </Pressable>
-          <Pressable
-            onPress={() =>
-              Linking.openURL('mailto: anwerthesolangi@gmail.com')
-            }>
-            <Icon name="mail-outline" color="#14c192" size={38} />
-          </Pressable>
-          <Pressable
-            onPress={() =>
-              Linking.openURL(
-                `whatsapp://send?phone=${+923212325161}&text=${'Hey there opened whatsapp for you'}`,
-              )
-            }>
-            <Icon name="logo-whatsapp" color="#4FCE5D" size={38} />
-          </Pressable>
-        </View>
-      </View>
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  contentContainer: {
-    flexGrow: 1,
-  },
-  heading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 32,
-    color: '#212121',
-    textAlign: 'center',
-  },
-  leftHeading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 32,
-    color: '#212121',
-  },
-  rightHeading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 32,
-    color: '#212121',
-    textAlign: 'right',
-  },
-  headingDesc: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#303b4a',
-    textAlign: 'center',
-    marginHorizontal: 3,
-  },
-  card: {
-    backgroundColor: '#2d8fff',
-    width: '100%',
-    height: 80,
-    padding: 10,
-    justifyContent: 'center',
-    alignItems: 'center',
-    marginVertical: 12,
-  },
-  cardText: {
-    color: '#fff',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 24,
-    textAlign: 'center',
-  },
-  row: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    justifyContent: 'space-around',
-    marginHorizontal: 15,
-    marginVertical: 10,
-  },
-  rowComp: {
-    alignItems: 'center',
-    width: '80%',
-  },
-  counter: {
-    color: '#1a2e3b',
-    fontSize: 28,
-    fontFamily: 'Roboto-Medium',
-  },
-  option: {
-    color: '#192e3b',
-    fontSize: 16,
-    fontFamily: 'Roboto-Medium',
-    textAlign: 'center',
-    flexShrink: 1,
-    width: '50%',
-  },
-  paraContainer: {
-    margin: 10,
-  },
-  para: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 13.5,
-    color: '#212121',
-    flexShrink: 1,
-  },
-  footer: {
-    alignItems: 'center',
-  },
-  footerRow: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    alignItems: 'center',
-    width: '60%',
-    marginHorizontal: 12,
-    marginBottom: 18,
-    marginTop: 10,
-  },
-});
-
-export default AboutComp;
diff --git a/src/Screens/Block.js b/src/Screens/Block.js
deleted file mode 100644
index 5ac10eb..0000000
--- a/src/Screens/Block.js
+++ /dev/null
@@ -1,163 +0,0 @@
-import React, {useState} from 'react';
-import {
-  View,
-  Text,
-  VirtualizedList,
-  TextInput,
-  StyleSheet,
-  Image,
-} from 'react-native';
-import List from '../Utils/BlockedUsers.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {Button} from '../Modules';
-import {widthPercentageToDP} from '../Utils/DpToPixel';
-
-const BlockedUser = props => {
-  const [filteredUsers, setFilteredUsers] = useState([]);
-  const [searchValue, setSearchValue] = useState(null);
-
-  const onChangeText = val => {
-    setSearchValue(val);
-    const filteredArray = List.filter(value =>
-      value?.username.toLowerCase().includes(val.toLowerCase()),
-    );
-    setFilteredUsers(filteredArray);
-  };
-
-  const itemCount = () => {
-    return searchValue && searchValue.length !== 0
-      ? filteredUsers.length
-      : List.length;
-  };
-
-  const Item = ({item}) => {
-    return (
-      <View style={styles.profileContainer}>
-        <Image
-          source={{uri: item?.profileAvtar}}
-          style={styles.profileAvtar}
-          resizeMode="cover"
-        />
-        <View style={styles.detailContainer}>
-          <Text>{item?.username}</Text>
-          <Text style={styles.email}>{item?.email}</Text>
-        </View>
-        <Button
-          title="Remove"
-          styleProps={styles.button}
-          textStyle={styles.buttonText}
-        />
-      </View>
-    );
-  };
-
-  const EmptyComponent = () => {
-    return (
-      <View style={styles.emptyContainer}>
-        <Icon name="person-circle-outline" color="#192948" size={170} />
-        <Text style={styles.head}>No User</Text>
-      </View>
-    );
-  };
-
-  return (
-    <View style={styles.container}>
-      <View style={styles.contentContainer}>
-        <Text style={styles.text}>
-          List of accounts you blocked or restricted.
-        </Text>
-        <View style={styles.inputContainer}>
-          <Icon name="search-outline" size={26} color="#9ba3ae" />
-          <TextInput
-            value={searchValue}
-            placeholder="Search user"
-            placeholderTextColor="#d0d5da"
-            style={styles.input}
-            maxLength={256}
-            autoCapitalize="none"
-            onChangeText={onChangeText}
-          />
-        </View>
-        <VirtualizedList
-          data={searchValue && searchValue.length !== 0 ? filteredUsers : List}
-          getItemCount={itemCount}
-          getItem={(item, index) => item[index]}
-          renderItem={Item}
-          ListEmptyComponent={EmptyComponent}
-        />
-      </View>
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  contentContainer: {
-    marginHorizontal: 10,
-    flexGrow: 1,
-  },
-  inputContainer: {
-    borderColor: '#e5e7eb',
-    borderWidth: 1.5,
-    flexDirection: 'row',
-    alignItems: 'center',
-    borderRadius: 8,
-    paddingHorizontal: 10,
-  },
-  input: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    color: '#212121',
-    width: '90%',
-  },
-  profileContainer: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginVertical: 8,
-  },
-  profileAvtar: {
-    width: 55,
-    height: 55,
-    borderRadius: 55 / 2,
-  },
-  detailContainer: {
-    width: widthPercentageToDP('54.2%'),
-    marginHorizontal: 10,
-  },
-  email: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    color: '#6b727e',
-  },
-  button: {
-    width: widthPercentageToDP('22%'),
-    backgroundColor: '#fff',
-    borderColor: '#e5e7eb',
-    elevation: 2,
-  },
-  buttonText: {
-    color: '#f23f5e',
-  },
-  text: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#212121',
-  },
-  emptyContainer: {
-    flex: 1,
-    backgroundColor: '#fff',
-    justifyContent: 'center',
-    alignItems: 'center',
-  },
-  head: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 22,
-    textAlign: 'center',
-    color: '#181818',
-  },
-});
-
-export default BlockedUser;
diff --git a/src/Screens/Channel.js b/src/Screens/Channel.js
deleted file mode 100644
index 64f4ca2..0000000
--- a/src/Screens/Channel.js
+++ /dev/null
@@ -1,344 +0,0 @@
-import {useFocusEffect} from '@react-navigation/native';
-import React, {useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  Pressable,
-  Image,
-  TouchableOpacity,
-  VirtualizedList,
-} from 'react-native';
-import Modal from 'react-native-modal';
-import ChannelData from '../Utils/Channel.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-import HomeData from '../Utils/HomeData.json';
-import {heightPercentageToDP} from '../Utils/DpToPixel';
-import {getMonthString, numberSeperator} from '../Utils/Util';
-
-const Option = props => {
-  return (
-    <Pressable style={styles.option} onPress={props.onPress}>
-      <Text style={styles.optionText}>{props.title}</Text>
-    </Pressable>
-  );
-};
-
-export const Description = props => {
-  const {icon, count} = props;
-  return (
-    <View style={styles.descView}>
-      {icon && <Icon name={icon} size={26} color="#212121" />}
-      {count ? (
-        <Text style={styles.descHead}>{numberSeperator(count)}</Text>
-      ) : count === 0 ? (
-        <Text style={styles.descHead}>{numberSeperator(count)}</Text>
-      ) : (
-        <Text style={styles.descHead}>{props.head}</Text>
-      )}
-      <Text style={styles.descTitle}>{props.title}</Text>
-    </View>
-  );
-};
-
-const ChannelScreen = props => {
-  const [optionsModal, setOptionsModal] = useState(false);
-
-  useFocusEffect(() => {
-    props.navigation.dangerouslyGetParent().setOptions({
-      headerRight: headerProps => (
-        <TouchableOpacity
-          style={styles.rightButton}
-          onPress={() => setOptionsModal(!optionsModal)}>
-          <Icon name="ellipsis-vertical" color="#040201" size={22} />
-        </TouchableOpacity>
-      ),
-    });
-  });
-
-  const ItemComp = ({item, index}) => {
-    return (
-      <Pressable
-        onPress={() =>
-          props.navigation.navigate('Player', {
-            videoIndex: index,
-          })
-        }
-        style={styles.videoContainer}>
-        <Image
-          source={{
-            uri: item?.thumb,
-          }}
-          resizeMode="cover"
-          style={styles.thumbnail}
-        />
-        <View style={styles.detailContainer}>
-          <View style={styles.titleContainer}>
-            <Text style={styles.videoTitle} numberOfLines={2}>
-              {item?.title}
-            </Text>
-            <Text style={styles.videoDescription} numberOfLines={2}>
-              {`${item?.views} views . ${
-                item?.uploaded === 'just now'
-                  ? 'just now'
-                  : `${item?.uploaded} ago`
-              }`}
-            </Text>
-          </View>
-          <TouchableOpacity>
-            <Icon name="ellipsis-vertical" size={14} color="#6c6c6c" />
-          </TouchableOpacity>
-        </View>
-      </Pressable>
-    );
-  };
-
-  return (
-    <View style={styles.mainContainer}>
-      <VirtualizedList
-        data={HomeData}
-        getItemCount={() => HomeData.length}
-        getItem={(data, index) => data[index]}
-        ListHeaderComponent={() => {
-          return (
-            <View>
-              <Image
-                source={{uri: ChannelData[0]?.cover}}
-                style={styles.cover}
-                resizeMode="contain"
-              />
-              <Image
-                style={styles.channelAvtar}
-                source={{uri: ChannelData[0]?.avtar}}
-              />
-              <Text style={styles.channelName}>{ChannelData[0]?.name}</Text>
-              <Pressable style={styles.followButton}>
-                <Text style={styles.buttonText}>Follow</Text>
-              </Pressable>
-              <View style={styles.channelDescription}>
-                <Description
-                  head={ChannelData[0]?.moreInfo?.followers}
-                  title="Followers"
-                />
-                <Text style={styles.divider}>|</Text>
-                <Description
-                  head={ChannelData[0]?.moreInfo?.totalVideos}
-                  title="Videos"
-                />
-                <Text style={styles.divider}>|</Text>
-                <Description
-                  head={`${getMonthString(
-                    new Date().getMonth(),
-                  )} ${new Date().getFullYear()}`}
-                  title="Joined on"
-                />
-              </View>
-              <Pressable
-                style={styles.channelDescription}
-                onPress={() =>
-                  props.navigation?.navigate('ChannelScreen', {screen: 'About'})
-                }>
-                <Text numberOfLines={2} style={styles.description}>
-                  {ChannelData[0]?.description}
-                </Text>
-                <Icon
-                  name="chevron-forward-outline"
-                  size={28}
-                  color="#040201"
-                />
-              </Pressable>
-              <Text style={styles.heading}>Latest Videos</Text>
-            </View>
-          );
-        }}
-        initialNumToRender={5}
-        renderItem={ItemComp}
-        ListFooterComponent={() => {
-          return <View style={styles.listFooter} />;
-        }}
-        keyExtractor={(item, index) => index.toString()}
-      />
-
-      <Modal
-        isVisible={optionsModal}
-        style={styles.modal}
-        swipeDirection="down"
-        onSwipeComplete={e => setOptionsModal(false)}
-        onBackButtonPress={() => setOptionsModal(false)}
-        onBackdropPress={() => setOptionsModal(false)}>
-        <View style={styles.modalContainer}>
-          <View style={styles.modalLine} />
-          <Option title="Report" />
-          <Option title="Block User" />
-          <Option title="Restrict" />
-          <Option title="Subscribe" />
-          <Option title="Copy Profile URL" />
-          <Option title="Share profile" />
-        </View>
-      </Modal>
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  mainContainer: {
-    flex: 1,
-  },
-  modal: {
-    justifyContent: 'flex-end',
-    margin: 0,
-  },
-  modalContainer: {
-    backgroundColor: '#fff',
-    borderTopLeftRadius: 12,
-    borderTopRightRadius: 12,
-    padding: 2,
-  },
-  modalLine: {
-    borderBottomWidth: 4,
-    borderBottomColor: '#040201',
-    width: '10%',
-    alignSelf: 'center',
-    borderRadius: 10,
-    marginVertical: 10,
-  },
-  option: {
-    marginHorizontal: 12,
-    marginVertical: 9,
-  },
-  optionText: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 18,
-    color: '#040201',
-  },
-  channelCover: {
-    width: '100%',
-    height: '34%',
-    resizeMode: 'contain',
-  },
-  cover: {
-    width: '100%',
-    height: 154,
-  },
-  headerRight: {
-    flexDirection: 'row',
-    alignItems: 'center',
-  },
-  rightButton: {
-    marginHorizontal: 3,
-    alignSelf: 'center',
-    width: 30,
-    height: 30,
-    borderRadius: 30 / 2,
-  },
-  channelAvtar: {
-    marginVertical: 12,
-    alignSelf: 'center',
-    width: 80,
-    height: 80,
-    borderRadius: 80 / 2,
-  },
-  channelName: {
-    fontFamily: 'Roboto-Black',
-    fontSize: 20,
-    color: '#040201',
-    textAlign: 'center',
-    letterSpacing: 0.23,
-  },
-  followButton: {
-    alignSelf: 'center',
-    marginVertical: 4,
-  },
-  buttonText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 18,
-    letterSpacing: 0.29,
-  },
-  channelDescription: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    alignSelf: 'center',
-    marginVertical: 4,
-  },
-  divider: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 33,
-    color: '#929292',
-    marginHorizontal: 5,
-  },
-  descHead: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-  },
-  descView: {
-    justifyContent: 'center',
-    alignItems: 'center',
-    marginHorizontal: 10,
-  },
-  descTitle: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 13.7,
-    color: '#929292',
-  },
-  description: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 13,
-    letterSpacing: 0.17,
-    textAlign: 'center',
-    width: '85%',
-    alignSelf: 'center',
-    color: '#929292',
-  },
-  heading: {
-    fontFamily: 'Roboto-Black',
-    color: '#040201',
-    fontSize: 16,
-    margin: 8,
-  },
-  thumbnail: {
-    width: '45%',
-    height: heightPercentageToDP('12%'),
-    borderRadius: 8,
-  },
-  detailContainer: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    marginVertical: 8,
-    marginHorizontal: 10,
-    alignItems: 'center',
-    width: '48%',
-  },
-
-  videoTitle: {
-    color: '#282828',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    letterSpacing: 0.1,
-    width: '100%',
-  },
-  titleContainer: {
-    flexDirection: 'column',
-    width: '80%',
-  },
-  videoDescription: {
-    color: '#9c9c9c',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 12,
-  },
-  videoContainer: {
-    flexDirection: 'row',
-    marginHorizontal: 8,
-    marginVertical: 4,
-    width: '100%',
-    alignItems: 'flex-start',
-  },
-  listFooter: {
-    height: 30,
-  },
-});
-
-export default ChannelScreen;
diff --git a/src/Screens/Earnings.js b/src/Screens/Earnings.js
deleted file mode 100644
index 60d88f5..0000000
--- a/src/Screens/Earnings.js
+++ /dev/null
@@ -1,516 +0,0 @@
-import React, {useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  Pressable,
-  Image,
-  ScrollView,
-  Linking,
-  TextInput,
-  VirtualizedList,
-} from 'react-native';
-import {getMonthString, numberSeperator} from '../Utils/Util';
-import User from '../Utils/User.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-import dayjs from 'dayjs';
-import {BottomModal, Button, Alert} from '../Modules';
-import DateTimePicker from '@react-native-community/datetimepicker';
-import Countries from '../Utils/countries.json';
-
-const Option = ({icon, text, onPress}) => {
-  return (
-    <Pressable style={styles.optionContainer} onPress={onPress}>
-      <View style={styles.iconContainer}>
-        <Icon name={icon} color="#fff" size={22} style={styles.icon} />
-      </View>
-      <Text style={styles.optionText}>{text}</Text>
-    </Pressable>
-  );
-};
-
-const PayOption = ({logo, payer, min, onPress}) => {
-  return (
-    <Pressable style={styles.payOption} onPress={onPress}>
-      <Image source={logo} style={styles.logo} resizeMode="contain" />
-      <Text style={styles.payer}>{payer}</Text>
-      <Text style={styles.minPay}>Min ${min}</Text>
-    </Pressable>
-  );
-};
-
-const LastPay = ({amount, method, date}) => {
-  return (
-    <View style={styles.transHistory}>
-      <Text style={styles.transactionText}>{amount}</Text>
-      <Text style={styles.transactionText}>{method}</Text>
-      <Text style={styles.transactionText}>{date}</Text>
-    </View>
-  );
-};
-
-const Earnings = props => {
-  const [datePicker, setDatePicker] = useState(false);
-  const [date, setDate] = useState(new Date(1598051730000));
-  const [bottomModal, setBottomModal] = useState(false);
-  const [selectedCountry, setSelectedCountry] = useState('pk');
-  const [countryPicker, setCountryPicker] = useState(false);
-  const [isBankContent, setIsBankContent] = useState(false);
-  const [flagLink] = useState(
-    'https://raw.githubusercontent.com/stefangabos/world_countries/master/flags/32x32/',
-  );
-
-  const onChange = (event, selectedDate) => {
-    if (event.type === 'dismissed') {
-      setDatePicker(false);
-      return;
-    }
-    const currentDate = selectedDate || date;
-    setDate(currentDate);
-    setDatePicker(false);
-  };
-
-  const PaypalContent = paypalProps => {
-    return (
-      <View>
-        <Text style={styles.month}>
-          Get paid by credit or debit card, PayPal transfer or even via bank
-          account in just few clicks. All you need is your email address or
-          mobile number.{' '}
-          <Text
-            style={styles.link}
-            onPress={() => Linking.openURL('https://www.paypal.com/')}>
-            More about PayPal
-          </Text>{' '}
-          |
-          <Text
-            style={styles.link}
-            onPress={() =>
-              Linking.openURL(
-                'https://www.paypal.com/us/webapps/mpp/account-selection',
-              )
-            }>
-            {' '}
-            Create an account
-          </Text>
-        </Text>
-        <TextInput
-          placeholder="Email"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <TextInput
-          placeholder="Confirm email"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <Button title="Set payout" />
-      </View>
-    );
-  };
-
-  const BankTransfer = bankProps => {
-    const filtered = Countries.filter(c => c.code === selectedCountry);
-    const link = `${flagLink + filtered[0]?.code}.png`;
-    return (
-      <ScrollView>
-        <Text style={styles.heading}>Bank transfer</Text>
-        <Text>Country of bank account</Text>
-        <Pressable
-          style={styles.selectedCountry}
-          onPress={() => setCountryPicker(true)}>
-          <Image source={{uri: link}} style={styles.flag} />
-          <Text style={styles.selectedCountryText}>{filtered[0]?.name}</Text>
-          <Icon name="caret-down" size={22} color="#212121" />
-        </Pressable>
-        <Text style={styles.heading}>Your bank information</Text>
-        <TextInput
-          placeholder="Bank Name"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <TextInput
-          placeholder="Bank branch"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <TextInput
-          placeholder="Bank branch city"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <TextInput
-          placeholder="Account number"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <TextInput
-          placeholder="Account Title/Holder name"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <Text style={styles.heading}>Your information</Text>
-        <TextInput
-          placeholder="Account Name"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <TextInput
-          placeholder="Billing address"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <TextInput
-          placeholder="City"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <TextInput
-          placeholder="State"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <TextInput
-          placeholder="Postal code"
-          style={styles.input}
-          placeholderTextColor="#b8b8b8"
-          keyboardType="email-address"
-        />
-        <Button title="Set payout" />
-        <View style={styles.space} />
-      </ScrollView>
-    );
-  };
-
-  const countrySelector = code => {
-    setSelectedCountry(code);
-    setCountryPicker(false);
-  };
-
-  const renderItem = ({item}) => {
-    return (
-      <Pressable
-        style={styles.payoptionContainer}
-        onPress={() => countrySelector(item?.code)}>
-        <Image
-          source={{uri: `${flagLink + item?.code}.png`}}
-          style={styles.flag}
-        />
-        <Text style={styles.selectedCountryText}>{item?.name}</Text>
-      </Pressable>
-    );
-  };
-
-  const BankModal = () => {
-    setIsBankContent(true);
-    setBottomModal(true);
-  };
-
-  const modalDismiss = () => {
-    setBottomModal(false);
-    setIsBankContent(false);
-  };
-
-  return (
-    <ScrollView style={styles.container}>
-      <View style={styles.head}>
-        <View>
-          <Text style={styles.month}>{`${getMonthString(
-            new Date().getMonth(),
-          )} ${Math.floor(Math.random() * 30)}`}</Text>
-          <Text style={styles.desc}>Next payment date</Text>
-        </View>
-        <Text style={styles.month}>${numberSeperator(1540)}</Text>
-      </View>
-      <View style={styles.horizontalLine} />
-      <View style={styles.card}>
-        <Text style={styles.earning}>${User?.monthEarning}</Text>
-        <View style={styles.cardOption}>
-          <Option icon="time-outline" text="Auto payment" />
-          <Option
-            icon="calendar-outline"
-            text="Schedule"
-            onPress={() => setDatePicker(true)}
-          />
-        </View>
-      </View>
-      <View style={styles.card}>
-        <Text style={styles.heading}>Payout method</Text>
-        <View style={styles.payoptionContainer}>
-          <PayOption
-            logo={require('../../assets/ppLogo.png')}
-            payer="Paypal"
-            min="50"
-            onPress={() => setBottomModal(true)}
-          />
-          <PayOption
-            logo={require('../../assets/payoneerLogo.png')}
-            payer="Payoneer"
-            min="20"
-          />
-          <PayOption
-            logo={require('../../assets/bankLogo.png')}
-            payer="Bank Transfer"
-            min="100"
-            onPress={BankModal}
-          />
-        </View>
-      </View>
-      <View style={styles.transactionContainer}>
-        <View style={styles.line} />
-        <View style={styles.historyContainer}>
-          <Text style={styles.transText}>Payout history</Text>
-          <LastPay
-            amount={'$1237'}
-            method="Payoneer"
-            date={dayjs(new Date()).format('MMM DD YYYY')}
-          />
-          <LastPay
-            amount={'$26712'}
-            method="Payoneer"
-            date={dayjs(new Date()).format('MMM DD YYYY')}
-          />
-          <LastPay
-            amount={'$75'}
-            method="Payoneer"
-            date={dayjs(new Date()).format('MMM DD YYYY')}
-          />
-        </View>
-      </View>
-      {datePicker && (
-        <DateTimePicker
-          testID="dateTimePicker"
-          value={date}
-          mode={'date'}
-          display="spinner"
-          onChange={onChange}
-        />
-      )}
-      <BottomModal
-        isVisible={bottomModal}
-        scrollView={isBankContent}
-        dismiss={modalDismiss}>
-        <View style={styles.modalContainer}>
-          {isBankContent ? BankTransfer() : PaypalContent()}
-        </View>
-      </BottomModal>
-      <Alert
-        isVisible={countryPicker}
-        dismiss={() => setCountryPicker(false)}
-        title="Countries">
-        <VirtualizedList
-          data={Countries}
-          getItem={(item, index) => item[index]}
-          getItemCount={() => Countries.length}
-          renderItem={renderItem}
-          style={styles.countriesList}
-        />
-      </Alert>
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#FCFCFC',
-  },
-  head: {
-    flexDirection: 'row',
-    marginHorizontal: 10,
-    justifyContent: 'space-between',
-    alignItems: 'center',
-    width: '95%',
-  },
-  month: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    color: '#212121',
-  },
-  desc: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    color: '#bababa',
-  },
-  horizontalLine: {
-    borderBottomWidth: 1.7,
-    borderBottomColor: '#ededed',
-    marginVertical: 10,
-  },
-  card: {
-    width: '90%',
-    height: 200,
-    backgroundColor: '#fff',
-    elevation: 4,
-    borderRadius: 10,
-    alignSelf: 'center',
-    alignItems: 'center',
-    justifyContent: 'center',
-    marginVertical: 12,
-  },
-  earning: {
-    fontFamily: 'Roboto-Black',
-    fontSize: 40,
-    color: '#212121',
-  },
-  iconContainer: {
-    backgroundColor: '#4670b2',
-    width: 30,
-    height: 30,
-    borderRadius: 15,
-    justifyContent: 'center',
-    alignItems: 'center',
-  },
-  optionContainer: {
-    alignItems: 'center',
-    marginHorizontal: 15,
-  },
-  optionText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#a9a9ab',
-  },
-  cardOption: {
-    flexDirection: 'row',
-    marginHorizontal: 10,
-    marginVertical: 15,
-  },
-  heading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 18,
-    color: '#212121',
-  },
-  payoptionContainer: {
-    flexDirection: 'row',
-    alignItems: 'center',
-  },
-  payOption: {
-    width: 80,
-    height: 80,
-    borderRadius: 8,
-    backgroundColor: '#f6f6f6',
-    alignItems: 'center',
-    justifyContent: 'center',
-    marginHorizontal: 5,
-    marginVertical: 10,
-  },
-  logo: {
-    width: 30,
-    height: 30,
-  },
-  minPay: {
-    backgroundColor: '#e6ebf0',
-    width: '100%',
-    color: '#212121',
-    textAlign: 'center',
-    alignSelf: 'flex-end',
-    borderRadius: 4,
-  },
-  payer: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 13,
-    color: '#212121',
-    textAlign: 'center',
-  },
-  transactionContainer: {
-    backgroundColor: '#fff',
-    width: '100%',
-    flex: 1,
-    shadowColor: '#000',
-    shadowOffset: {
-      width: 0,
-      height: 2,
-    },
-    shadowOpacity: 0.23,
-    shadowRadius: 2.62,
-
-    elevation: 4,
-    borderTopLeftRadius: 20,
-    borderTopRightRadius: 20,
-    marginTop: 10,
-  },
-  line: {
-    alignSelf: 'center',
-    width: '10%',
-    height: 5,
-    marginVertical: 10,
-    borderRadius: 4,
-    backgroundColor: '#f0f0f0',
-  },
-  transText: {
-    color: '#b1b5b8',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-  },
-  historyContainer: {
-    marginVertical: 6,
-    marginHorizontal: 10,
-  },
-  transHistory: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    alignItems: 'center',
-    marginHorizontal: 7,
-    marginVertical: 8,
-  },
-  transactionText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    color: '#212121',
-    width: '38%',
-  },
-  modalContainer: {
-    margin: 10,
-  },
-  link: {
-    color: '#0084B4',
-  },
-  input: {
-    borderBottomColor: '#b8b8b8',
-    borderBottomWidth: 1.4,
-    width: '100%',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#212121',
-  },
-  selectedCountry: {
-    flexDirection: 'row',
-    width: '96%',
-    alignSelf: 'center',
-    height: 42,
-    borderRadius: 6,
-    borderWidth: 1.4,
-    borderColor: '#e4e8ec',
-    alignItems: 'center',
-  },
-  flag: {
-    width: 26,
-    height: 26,
-    marginHorizontal: 10,
-  },
-  selectedCountryText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#212121',
-    width: '80%',
-  },
-  countriesList: {
-    height: 400,
-  },
-  space: {
-    height: 20,
-  },
-});
-
-export default Earnings;
diff --git a/src/Screens/EditChannel.js b/src/Screens/EditChannel.js
deleted file mode 100644
index a94a423..0000000
--- a/src/Screens/EditChannel.js
+++ /dev/null
@@ -1,232 +0,0 @@
-import React, {useState} from 'react';
-import {
-  View,
-  ScrollView,
-  TextInput,
-  Text,
-  StyleSheet,
-  Image,
-  Pressable,
-} from 'react-native';
-import {heightPercentageToDP} from '../Utils/DpToPixel';
-import User from '../Utils/User.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {Button} from '../Modules';
-
-const EditChannel = props => {
-  const [name, setName] = useState('');
-  return (
-    <ScrollView style={styles.container}>
-      <View style={styles.comp}>
-        <Text style={styles.compHeading}>Personal Details</Text>
-        <View style={styles.horizontalLine} />
-        <TextInput
-          val={name}
-          style={styles.input}
-          onChange={val => setName(val)}
-          placeholder="Name"
-          placeholderTextColor="#b8b8b8"
-        />
-        <TextInput
-          val={name}
-          style={styles.input}
-          onChange={val => setName(val)}
-          placeholder="username"
-          placeholderTextColor="#b8b8b8"
-        />
-        <TextInput
-          val={name}
-          style={styles.input}
-          onChange={val => setName(val)}
-          placeholder="Location"
-          placeholderTextColor="#b8b8b8"
-        />
-      </View>
-      <View style={{...styles.comp, height: heightPercentageToDP('27%')}}>
-        <Text style={styles.compHeading}>Avtar & Cover</Text>
-        <View style={styles.horizontalLine} />
-        <View style={styles.coverContainer}>
-          <Image
-            source={{uri: User?.cover}}
-            style={styles.cover}
-            resizeMode="contain"
-          />
-          <View style={styles.coverOverlay} />
-          <Pressable style={styles.editButton}>
-            <Icon
-              name="pencil"
-              color="#fff"
-              size={20}
-              style={styles.coverButton}
-            />
-          </Pressable>
-        </View>
-        <View style={styles.avtarContainer}>
-          <Image
-            source={{uri: User?.avtar}}
-            style={styles.avtar}
-            resizeMode="cover"
-          />
-          <View style={styles.overlay} />
-          <Pressable>
-            <Icon
-              name="pencil"
-              color="#fff"
-              size={20}
-              style={styles.absoluteElem}
-            />
-          </Pressable>
-        </View>
-      </View>
-      <View style={styles.comp}>
-        <Text style={styles.compHeading}>Account Details</Text>
-        <View style={styles.horizontalLine} />
-        <TextInput
-          val={name}
-          style={styles.input}
-          onChange={val => setName(val)}
-          placeholder="Email"
-          placeholderTextColor="#b8b8b8"
-        />
-        <TextInput
-          val={name}
-          style={styles.input}
-          onChange={val => setName(val)}
-          placeholder="Password"
-          placeholderTextColor="#b8b8b8"
-        />
-        <TextInput
-          val={name}
-          style={styles.input}
-          onChange={val => setName(val)}
-          placeholder="Mobile number"
-          keyboardType="phone-pad"
-          placeholderTextColor="#b8b8b8"
-        />
-      </View>
-      <Button
-        styleProps={styles.sendButton}
-        title="Submit"
-        textStyle={styles.buttonText}
-        isLoading={false}
-        onPress={() => props.navigation.goBack()}
-      />
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fbfdff',
-  },
-  comp: {
-    margin: 10,
-    backgroundColor: '#fff',
-    paddingVertical: 8,
-    paddingHorizontal: 12,
-    borderRadius: 4,
-    shadowColor: '#000',
-    shadowOffset: {
-      width: 0,
-      height: 2,
-    },
-    shadowOpacity: 0.25,
-    shadowRadius: 3.84,
-    elevation: 4,
-    width: '93%',
-    alignSelf: 'center',
-  },
-  compHeading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16.4,
-    textTransform: 'capitalize',
-  },
-  horizontalLine: {
-    width: '100%',
-    borderBottomColor: '#b8b8b8',
-    borderBottomWidth: 1.4,
-    marginBottom: 10,
-    marginTop: 5,
-  },
-  input: {
-    borderBottomColor: '#b8b8b8',
-    borderBottomWidth: 1.4,
-    width: '100%',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#212121',
-  },
-  coverContainer: {
-    width: '100%',
-    height: heightPercentageToDP('17%'),
-    borderRadius: 8,
-  },
-  cover: {
-    width: '100%',
-    height: heightPercentageToDP('17%'),
-    borderRadius: 8,
-  },
-  avtarContainer: {
-    position: 'absolute',
-    width: 85,
-    height: 85,
-    borderRadius: 85 / 2,
-    alignItems: 'center',
-    justifyContent: 'center',
-    top: 120,
-    alignSelf: 'center',
-    borderWidth: 2,
-    borderColor: '#fff',
-  },
-  avtar: {
-    width: 80,
-    height: 80,
-    borderRadius: 40,
-  },
-  overlay: {
-    ...StyleSheet.absoluteFillObject,
-    backgroundColor: 'rgba(0,0,0,0.3)',
-    width: 80,
-    height: 80,
-    borderRadius: 40,
-  },
-  coverOverlay: {
-    ...StyleSheet.absoluteFillObject,
-    backgroundColor: 'rgba(0,0,0,0.3)',
-    width: '100%',
-    borderRadius: 8,
-  },
-  absoluteElem: {
-    position: 'absolute',
-    bottom: 30,
-    alignSelf: 'center',
-  },
-  editButton: {
-    backgroundColor: 'rgba(255, 255, 255, 0.4)',
-    width: 30,
-    height: 30,
-    borderRadius: 15,
-    alignItems: 'center',
-    justifyContent: 'center',
-    position: 'absolute',
-    bottom: 95,
-    right: 7,
-  },
-  sendButton: {
-    backgroundColor: '#04abf2',
-    width: '40%',
-    height: 45,
-    borderRadius: 35,
-    alignItems: 'center',
-    justifyContent: 'center',
-    flexDirection: 'row',
-    marginVertical: 8,
-  },
-  buttonText: {
-    color: '#fff',
-    fontFamily: 'Roboto-Medium',
-  },
-});
-
-export default EditChannel;
diff --git a/src/Screens/EditVideo.js b/src/Screens/EditVideo.js
deleted file mode 100644
index e052e99..0000000
--- a/src/Screens/EditVideo.js
+++ /dev/null
@@ -1,255 +0,0 @@
-import React, {useState} from 'react';
-import {
-  Text,
-  View,
-  TextInput,
-  StyleSheet,
-  ScrollView,
-  Image,
-  Pressable,
-} from 'react-native';
-import {heightPercentageToDP, widthPercentageToDP} from '../Utils/DpToPixel';
-import Videos from '../Utils/HomeData.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {BottomModal, Button, IconText} from '../Modules';
-
-const TextLabel = props => {
-  const {label, title, onChange, multiline} = props;
-  return (
-    <View>
-      <Text style={styles.inputLabel}>{label}</Text>
-      <TextInput
-        style={multiline ? styles.multiline : styles.textInput}
-        placeholder="Video title"
-        value={title}
-        multiline={multiline}
-        onChangeText={onChange}
-        {...props}
-      />
-    </View>
-  );
-};
-
-const EditVideo = props => {
-  const {index} = props.route?.params;
-  const video = Videos[index];
-  const [title, setTitle] = useState(video?.title);
-  const [description, setDescription] = useState(video?.description);
-  const [modal, setModal] = useState(false);
-  const [visibilityModal, setVisibilityModal] = useState(false);
-  const [visibilityText, setVisibilityText] = useState('Public');
-  const [visIcon, setVisIcon] = useState('earth');
-
-  const setVisibility = (icon, text) => {
-    setVisibilityText(text);
-    setVisIcon(icon);
-    setVisibilityModal(false);
-    return;
-  };
-
-  return (
-    <>
-      <ScrollView
-        style={styles.container}
-        contentContainerStyle={styles.contentView}>
-        <TextLabel
-          label="Title"
-          title={title}
-          onChange={val => setTitle(val)}
-          maxLength={100}
-        />
-        <Text style={styles.counter}>{`${title.length} / 100`}</Text>
-        <TextLabel
-          label="Description"
-          multiline
-          title={description}
-          onChange={val => setDescription(val)}
-        />
-        <Text style={styles.inputLabel}>Thumbnail</Text>
-        <Pressable
-          style={styles.thumbnailContainer}
-          onPress={() => setModal(true)}>
-          <Image
-            source={{
-              uri: `http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/${video?.thumb}`,
-            }}
-            style={styles.thumbnail}
-            resizeMode="cover"
-          />
-          <View style={styles.icon}>
-            <Icon
-              name="add-outline"
-              color={'#fff'}
-              size={28}
-              style={styles.absIcon}
-            />
-          </View>
-          <View style={styles.overlay} />
-        </Pressable>
-        <Pressable
-          style={styles.visibility}
-          onPress={() => setVisibilityModal(true)}>
-          <View style={styles.row}>
-            <Icon
-              name={`${visIcon}-outline`}
-              color="#1e2321"
-              size={20}
-              style={styles.absIcon}
-            />
-            <Text style={styles.visibilityText}>{visibilityText}</Text>
-          </View>
-          <Icon
-            name="caret-down"
-            color="#606060"
-            size={20}
-            style={styles.absIcon}
-          />
-        </Pressable>
-        <Button title="Update" />
-      </ScrollView>
-      <BottomModal isVisible={modal} dismiss={() => setModal(false)}>
-        <View style={styles.pickerModal}>
-          <Text style={styles.inputLabel}>Select</Text>
-          <Pressable style={styles.modalOption}>
-            <Text style={styles.modalText}>Camera</Text>
-          </Pressable>
-          <Pressable style={styles.modalOption}>
-            <Text style={styles.modalText}>Gallery</Text>
-          </Pressable>
-        </View>
-      </BottomModal>
-      <BottomModal
-        isVisible={visibilityModal}
-        dismiss={() => setVisibilityModal(false)}>
-        <View>
-          <Text style={styles.modalHeading}>Select Audience</Text>
-          <IconText
-            text="Public"
-            icon="earth-outline"
-            onPress={() => setVisibility('earth', 'Public')}
-          />
-          <IconText
-            text="My followers"
-            icon="people"
-            onPress={() => setVisibility('people', 'My followers')}
-          />
-          <IconText
-            text="Private"
-            icon="eye-off-outline"
-            onPress={() => setVisibility('eye-off', 'Private')}
-          />
-        </View>
-      </BottomModal>
-    </>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  contentView: {
-    flexGrow: 1,
-    margin: 10,
-  },
-  inputLabel: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    color: '#414852',
-    marginHorizontal: 4,
-    marginVertical: 5,
-  },
-  textInput: {
-    fontFamily: 'Roboto-Medium',
-    color: '#2f3742',
-    borderWidth: 1.4,
-    borderColor: '#dbdddf',
-    borderRadius: 8,
-  },
-  multiline: {
-    fontFamily: 'Roboto-Medium',
-    color: '#2f3742',
-    borderWidth: 1.4,
-    borderColor: '#dbdddf',
-    borderRadius: 8,
-    height: 200,
-    textAlignVertical: 'top',
-  },
-  counter: {
-    color: '#606060',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-  },
-  thumbnailContainer: {
-    width: '100%',
-    height: heightPercentageToDP('27%'),
-    borderRadius: 8,
-    marginVertical: 8,
-    justifyContent: 'center',
-    alignItems: 'center',
-  },
-  thumbnail: {
-    width: widthPercentageToDP('95%'),
-    height: heightPercentageToDP('27%'),
-    borderRadius: 8,
-  },
-  overlay: {
-    ...StyleSheet.absoluteFillObject,
-    backgroundColor: 'rgba(0,0,0,0.3)',
-    width: widthPercentageToDP('95%'),
-    height: heightPercentageToDP('27%'),
-    borderRadius: 8,
-  },
-  icon: {
-    position: 'absolute',
-    width: 40,
-    height: 40,
-    borderRadius: 20,
-    justifyContent: 'center',
-    alignItems: 'center',
-    backgroundColor: 'rgba(52, 52, 52, 0.8)',
-  },
-  modalOption: {
-    width: '95%',
-    height: heightPercentageToDP('8'),
-    alignSelf: 'center',
-    justifyContent: 'center',
-    borderRadius: 7,
-    alignItems: 'center',
-    marginVertical: 10,
-    backgroundColor: '#efefef',
-  },
-  pickerModal: {
-    height: 200,
-  },
-  visibility: {
-    flexDirection: 'row',
-    height: heightPercentageToDP('7'),
-    borderWidth: 1.5,
-    borderColor: '#dbdddf',
-    borderRadius: 8,
-    alignItems: 'center',
-    paddingHorizontal: 10,
-    justifyContent: 'space-between',
-  },
-  visibilityText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    marginHorizontal: 6,
-  },
-  row: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginVertical: 4,
-    paddingHorizontal: 10,
-  },
-  modalHeading: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 18,
-    textAlign: 'center',
-  },
-});
-
-export default EditVideo;
diff --git a/src/Screens/Explore.js b/src/Screens/Explore.js
deleted file mode 100644
index f32680f..0000000
--- a/src/Screens/Explore.js
+++ /dev/null
@@ -1,315 +0,0 @@
-import React, {useState} from 'react';
-import {
-  View,
-  Text,
-  VirtualizedList,
-  StyleSheet,
-  ImageBackground,
-  ActivityIndicator,
-  Image,
-  ScrollView,
-  Pressable,
-} from 'react-native';
-import Icon from 'react-native-vector-icons/Ionicons';
-import Videos from '../Utils/HomeData.json';
-import {IconText} from '../Modules';
-import {widthPercentageToDP} from '../Utils/DpToPixel';
-import {numberFormat} from '../Utils/Util';
-
-const VideoTile = props => {
-  const {thumbnail, title, channel, views, onPress, onChannelPress} = props;
-  return (
-    <Pressable style={styles.videoView} onPress={onPress}>
-      <Image
-        source={{
-          uri: thumbnail,
-        }}
-        style={styles.thumbnail}
-        resizeMode="cover"
-      />
-      <Text style={styles.title}>{title}</Text>
-      <Pressable onPress={onChannelPress}>
-        <Text style={styles.tileChannel}>{channel}</Text>
-      </Pressable>
-      <Text style={styles.views}>{`${numberFormat(views)} views`}</Text>
-    </Pressable>
-  );
-};
-
-const ListFooter = ({onPress}) => {
-  return (
-    <Pressable onPress={onPress}>
-      <View style={styles.seeMore}>
-        <Icon name="add-outline" color="#212121" size={22} />
-      </View>
-      <Text style={styles.title}>See More</Text>
-    </Pressable>
-  );
-};
-
-const Explore = props => {
-  const randomInt = Math.floor(Math.random() * Videos.length);
-  const [thumbLoading, setThumbLoading] = useState(true);
-  const trendedVideo = Videos[randomInt];
-  const slicedData = Videos.slice(0, 6);
-
-  const TrendingItems = ({item, index}) => {
-    return (
-      <VideoTile
-        title={item?.title}
-        channel={item?.channel}
-        thumbnail={item?.thumb}
-        views={item?.views}
-        onPress={() =>
-          props.navigation.navigate('Player', {
-            videoIndex: index,
-          })
-        }
-        onChannelPress={() =>
-          props.navigation.navigate('ChannelScreen', {
-            channelName: item?.channel,
-          })
-        }
-      />
-    );
-  };
-
-  const Footer = screenTitle => {
-    return <ListFooter onPress={() => screenNavigator(screenTitle)} />;
-  };
-
-  const screenNavigator = screenTitle => {
-    props.navigation.navigate('VideosScreen', {
-      screenName: screenTitle,
-      listId: 1,
-    });
-  };
-
-  return (
-    <ScrollView
-      style={styles.container}
-      contentContainerStyle={styles.contentContainer}>
-      <Pressable
-        onPress={() =>
-          props.navigation.navigate('Player', {
-            videoIndex: randomInt,
-          })
-        }>
-        <ImageBackground
-          source={{
-            uri: trendedVideo?.thumb,
-          }}
-          resizeMode="cover"
-          style={styles.trendThumb}
-          onLoad={() => setThumbLoading(false)}>
-          {thumbLoading && <ActivityIndicator size="large" color="#fff" />}
-          <View style={styles.overlay} />
-          <View style={styles.trendContainer}>
-            <View style={styles.row}>
-              <Image
-                source={{
-                  uri: 'https://s3.envato.com/files/335035895/thumbnail.png',
-                }}
-                style={styles.trendAvtar}
-                resizeMode="cover"
-              />
-              <Text style={styles.channelName}>{trendedVideo?.channel}</Text>
-            </View>
-            <Icon name="flame" size={28} color="#ff9f00" />
-          </View>
-          <View style={styles.trendTitleContainer}>
-            <Text style={styles.trendedVideoTitle}>{trendedVideo?.title}</Text>
-            <Text style={styles.channelName}>#trending</Text>
-          </View>
-        </ImageBackground>
-      </Pressable>
-      <View style={styles.videosContainer}>
-        <IconText
-          icon="flame"
-          text="Trending"
-          iconColor="#04abf2"
-          onPress={() => screenNavigator('Trending')}
-        />
-        <VirtualizedList
-          horizontal
-          data={slicedData}
-          getItem={(item, index) => item[index]}
-          getItemCount={() => slicedData.length}
-          renderItem={TrendingItems}
-          removeClippedSubviews
-          maxToRenderPerBatch={3}
-          initialNumToRender={5}
-          ListFooterComponentStyle={styles.footer}
-          ListFooterComponent={() => Footer('Trending')}
-          keyExtractor={(item, index) => index.toString()}
-        />
-        <View style={styles.space} />
-        <IconText
-          icon="videocam-outline"
-          text="Latest videos"
-          iconColor="#ff9f00"
-          onPress={() => screenNavigator('Latest videos')}
-        />
-        <VirtualizedList
-          horizontal
-          data={slicedData}
-          getItem={(item, index) => item[index]}
-          getItemCount={() => slicedData.length}
-          renderItem={TrendingItems}
-          removeClippedSubviews
-          maxToRenderPerBatch={3}
-          initialNumToRender={5}
-          ListFooterComponentStyle={styles.footer}
-          ListFooterComponent={() => Footer('Latest videos')}
-          keyExtractor={(item, index) => index.toString()}
-        />
-        <View style={styles.space} />
-        <IconText
-          icon="film-outline"
-          text="FILM & ANIMATION"
-          iconColor="#ff9f00"
-          onPress={() => screenNavigator('FILM & ANIMATION')}
-        />
-        <VirtualizedList
-          horizontal
-          data={slicedData}
-          getItem={(item, index) => item[index]}
-          getItemCount={() => slicedData.length}
-          renderItem={TrendingItems}
-          removeClippedSubviews
-          maxToRenderPerBatch={3}
-          initialNumToRender={5}
-          ListFooterComponentStyle={styles.footer}
-          ListFooterComponent={() => Footer('Films & Animations')}
-          keyExtractor={(item, index) => index.toString()}
-        />
-        <View style={styles.space} />
-        <IconText
-          icon="musical-notes-outline"
-          text="Music"
-          iconColor="#ff9f00"
-          onPress={() => screenNavigator('Music')}
-        />
-        <VirtualizedList
-          horizontal
-          data={slicedData}
-          style={styles.listStyle}
-          getItem={(item, index) => item[index]}
-          getItemCount={() => slicedData.length}
-          renderItem={TrendingItems}
-          removeClippedSubviews
-          maxToRenderPerBatch={3}
-          initialNumToRender={5}
-          ListFooterComponentStyle={styles.footer}
-          ListFooterComponent={() => Footer('Music')}
-          keyExtractor={(item, index) => index.toString()}
-        />
-        <View style={styles.bottom} />
-      </View>
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-  },
-  contentContainer: {
-    flexGrow: 1,
-    backgroundColor: '#fff',
-  },
-  trendThumb: {
-    height: 220,
-    width: '100%',
-    backgroundColor: 'rgba(0,0,0,0.5)',
-    justifyContent: 'flex-end',
-  },
-  overlay: {
-    position: 'absolute',
-    top: 0,
-    right: 0,
-    bottom: 0,
-    left: 0,
-    justifyContent: 'center',
-    alignItems: 'center',
-    backgroundColor: 'rgba(0,0,0,0.3)',
-  },
-  trendAvtar: {
-    width: 40,
-    height: 40,
-    borderRadius: 20,
-  },
-  trendContainer: {
-    flexDirection: 'row',
-    marginHorizontal: 8,
-    alignItems: 'center',
-    justifyContent: 'space-between',
-  },
-  row: {
-    flexDirection: 'row',
-    alignItems: 'center',
-  },
-  channelName: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    color: '#fff',
-    marginHorizontal: 6,
-  },
-  trendTitleContainer: {
-    flexDirection: 'row',
-    marginHorizontal: 8,
-    alignItems: 'center',
-    justifyContent: 'space-between',
-    marginBottom: 8,
-  },
-  trendedVideoTitle: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#fff',
-  },
-  videosContainer: {
-    marginVertical: 12,
-  },
-  thumbnail: {
-    width: 148,
-    height: 83,
-    borderRadius: 10,
-  },
-  videoView: {
-    marginHorizontal: 5,
-    width: widthPercentageToDP('35'),
-  },
-  title: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14.5,
-    color: '#212121',
-  },
-  tileChannel: {
-    color: '#04abf2',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 13,
-  },
-  footer: {
-    marginHorizontal: 5,
-    top: 15,
-  },
-  seeMore: {
-    width: 30,
-    height: 30,
-    borderRadius: 15,
-    borderWidth: 1,
-    borderColor: '#212121',
-    alignSelf: 'center',
-    alignItems: 'center',
-    justifyContent: 'center',
-  },
-  space: {
-    height: 8,
-    marginVertical: 5,
-  },
-  bottom: {
-    height: 48,
-  },
-});
-
-export default Explore;
diff --git a/src/Screens/HelpSupport.js b/src/Screens/HelpSupport.js
deleted file mode 100644
index 101550f..0000000
--- a/src/Screens/HelpSupport.js
+++ /dev/null
@@ -1,494 +0,0 @@
-import React, {useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  ImageBackground,
-  Pressable,
-  VirtualizedList,
-  FlatList,
-  ScrollView,
-  Linking,
-  TextInput,
-} from 'react-native';
-import {heightPercentageToDP, widthPercentageToDP} from '../Utils/DpToPixel';
-import Icon from 'react-native-vector-icons/Ionicons';
-import FAQ from '../Utils/Faq.json';
-import TopicData from '../Utils/Topic.json';
-import Modal from 'react-native-modal';
-import {BottomModal, Button} from '../Modules';
-
-const ScrollableList = ({children, onScroll, contentContainerStyle}) => {
-  return (
-    <FlatList
-      data={[]}
-      style={styles.body}
-      contentContainerStyle={contentContainerStyle}
-      onScroll={onScroll}
-      keyExtractor={() => 'key'}
-      renderItem={null}
-      ListHeaderComponent={<>{children}</>}
-    />
-  );
-};
-
-const Topic = ({icon, title, onPress, children}) => {
-  return (
-    <Pressable style={styles.topic} onPress={onPress}>
-      {icon && (
-        <Icon name={icon} color="#2d3245" size={48} style={styles.megaphone} />
-      )}
-      {children}
-      <Text style={styles.topicText}>{title}</Text>
-    </Pressable>
-  );
-};
-
-const HelpandSupport = props => {
-  const [data] = useState(FAQ);
-  const [topics] = useState(TopicData);
-  const [faqModal, setFaqModal] = useState(false);
-  const [selectedIndex, setSelectedIndex] = useState(null);
-  const [topicModal, setTopicModal] = useState(false);
-  const [selectedTopic, setSelectedTopic] = useState(null);
-  const [contactUsModal, setContactUsModal] = useState(false);
-
-  const renderItem = ({item, index}) => {
-    return (
-      <Pressable style={styles.question} onPress={() => questionOpen(index)}>
-        <Text style={styles.text}>{item?.question}</Text>
-        <Icon name="chevron-forward-outline" color="#60686e" size={18} />
-      </Pressable>
-    );
-  };
-
-  const Seperator = () => {
-    return <View style={styles.line} />;
-  };
-
-  const questionOpen = index => {
-    setSelectedIndex(index);
-    setFaqModal(true);
-  };
-
-  const topicSelect = index => {
-    setSelectedTopic(index);
-    setTopicModal(true);
-  };
-
-  const topicRender = ({item, index}) => {
-    return (
-      <Topic
-        icon={item?.icon}
-        title={item?.topic}
-        onPress={() => topicSelect(index)}>
-        {item?.text && <Text style={styles.copyright}>{item?.text}</Text>}
-      </Topic>
-    );
-  };
-
-  const dismissFaqModal = () => {
-    setFaqModal(false);
-  };
-
-  const dismissTopicModal = () => {
-    setTopicModal(false);
-  };
-
-  return (
-    <ScrollableList
-      style={styles.container}
-      contentContainerStyle={styles.contentContainer}>
-      <ImageBackground
-        source={require('../../assets/helpCenter.png')}
-        style={styles.backgroundImage}
-        resizeMode="cover">
-        <Pressable
-          style={styles.contactUs}
-          onPress={() => setContactUsModal(true)}>
-          <View style={styles.icon}>
-            <Icon name="chatbubble-ellipses-outline" color="#fff" size={31} />
-          </View>
-          <Text style={styles.contactText}>Write to us</Text>
-          <Icon name="chevron-forward-outline" color="#fff" size={20} />
-        </Pressable>
-      </ImageBackground>
-      <View style={styles.card}>
-        <Text style={styles.cardHeading}>Frequently asked</Text>
-        <VirtualizedList
-          data={data}
-          getItemCount={() => data.length}
-          getItem={(item, index) => item[index]}
-          renderItem={renderItem}
-          ItemSeparatorComponent={Seperator}
-        />
-      </View>
-      <View style={styles.card}>
-        <Text style={styles.cardHeading}>Popular topics</Text>
-        <VirtualizedList
-          data={topics}
-          getItemCount={() => topics.length}
-          getItem={(item, index) => item[index]}
-          renderItem={topicRender}
-          horizontal
-          keyExtractor={(item, index) => index.toString()}
-        />
-      </View>
-      <View style={styles.card}>
-        <Text style={styles.cardHeading}>Directly reach to us</Text>
-        <View style={styles.footerRow}>
-          <Pressable onPress={() => Linking.openURL('tel: +923212325161')}>
-            <Icon name="call-outline" color="#ffba00" size={38} />
-          </Pressable>
-          <Pressable
-            onPress={() =>
-              Linking.openURL('mailto: anwerthesolangi@gmail.com')
-            }>
-            <Icon name="mail-outline" color="#14c192" size={38} />
-          </Pressable>
-          <Pressable
-            onPress={() =>
-              Linking.openURL(
-                `whatsapp://send?phone=${+923212325161}&text=${'Hey there opened whatsapp for you'}`,
-              )
-            }>
-            <Icon name="logo-whatsapp" color="#4FCE5D" size={38} />
-          </Pressable>
-        </View>
-      </View>
-      <View style={styles.space} />
-      <Modal
-        isVisible={faqModal}
-        style={styles.modal}
-        backdropOpacity={0.4}
-        onBackButtonPress={dismissFaqModal}
-        onBackdropPress={dismissFaqModal}
-        useNativeDriver>
-        <View style={styles.modalContainer}>
-          <Pressable style={styles.modalClose} onPress={dismissFaqModal}>
-            <Icon name="close-outline" color="#fff" size={34} />
-          </Pressable>
-          {selectedIndex !== false && (
-            <View>
-              <Text style={styles.modalQuestion}>
-                {data[selectedIndex]?.question}
-              </Text>
-              <ScrollView style={styles.modalAnswer}>
-                <Text>{data[selectedIndex]?.answer}</Text>
-              </ScrollView>
-            </View>
-          )}
-        </View>
-      </Modal>
-      <Modal
-        isVisible={topicModal}
-        style={styles.modal}
-        backdropOpacity={0.6}
-        onBackButtonPress={dismissTopicModal}
-        onBackdropPress={dismissTopicModal}
-        useNativeDriver>
-        <View style={styles.topicModal}>
-          <View style={styles.modalTop}>
-            <Pressable style={styles.modalClose} onPress={dismissTopicModal}>
-              <Icon name="close-outline" color="#fff" size={34} />
-            </Pressable>
-            {selectedTopic !== false && (
-              <View>
-                <Text style={styles.modalTopic}>
-                  {topics[selectedTopic]?.topic}
-                </Text>
-                <Text style={styles.topicDescription}>
-                  {topics[selectedTopic]?.description}
-                </Text>
-              </View>
-            )}
-          </View>
-          {selectedTopic !== false && (
-            <View style={styles.topicCard}>
-              <FlatList
-                data={topics[selectedTopic]?.questions}
-                renderItem={renderItem}
-              />
-            </View>
-          )}
-        </View>
-      </Modal>
-      <BottomModal
-        isVisible={contactUsModal}
-        dismiss={() => setContactUsModal(false)}>
-        <View style={styles.contactContainer}>
-          <Text style={styles.modalHeading}>Contact us</Text>
-          <Text style={styles.label}>Your Name</Text>
-          <View style={styles.textInput}>
-            <Icon name="person-outline" color="#181818" size={24} />
-            <TextInput
-              style={styles.input}
-              placeholder="Your name"
-              placeholderTextColor={'#b5b3c0'}
-            />
-          </View>
-          <Text style={styles.label}>Mail</Text>
-          <View style={styles.textInput}>
-            <Icon name="mail-outline" color="#181818" size={24} />
-            <TextInput
-              style={styles.input}
-              placeholder="yourmail@mail.com"
-              placeholderTextColor={'#b5b3c0'}
-            />
-          </View>
-          <Text style={styles.label}>Message</Text>
-          <TextInput
-            style={styles.inputMessage}
-            multiline
-            placeholder="Your message"
-            placeholderTextColor={'#b5b3c0'}
-          />
-          <Button title="Send message" />
-        </View>
-      </BottomModal>
-    </ScrollableList>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#e9e8ee',
-  },
-  contentContainer: {
-    flexGrow: 1,
-  },
-  backgroundImage: {
-    width: '100%',
-    height: 230,
-    backgroundColor: '#fff',
-  },
-  contactUs: {
-    width: widthPercentageToDP('90'),
-    height: heightPercentageToDP('8'),
-    backgroundColor: '#00C6FF',
-    borderRadius: 2,
-    alignSelf: 'center',
-    alignItems: 'center',
-    flexDirection: 'row',
-    position: 'absolute',
-    top: 200,
-  },
-  icon: {
-    backgroundColor: '#0078FF',
-    height: '100%',
-    justifyContent: 'center',
-    width: 60,
-    alignItems: 'center',
-  },
-  contactText: {
-    color: '#fff',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 18,
-    marginHorizontal: 10,
-    width: widthPercentageToDP('60'),
-  },
-  card: {
-    padding: 10,
-    backgroundColor: '#fff',
-    borderRadius: 6,
-    width: widthPercentageToDP('91'),
-    alignSelf: 'center',
-    top: 50,
-    shadowColor: '#000',
-    shadowOffset: {
-      width: 0,
-      height: 1,
-    },
-    shadowOpacity: 0.22,
-    shadowRadius: 2.22,
-    elevation: 0.1,
-    marginVertical: 10,
-  },
-  cardHeading: {
-    fontFamily: 'Roboto-Black',
-    color: '#181818',
-    fontSize: 18,
-    marginTop: 6,
-    marginBottom: 10,
-    letterSpacing: 0.7,
-  },
-  question: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginVertical: 10,
-    paddingVertical: 4,
-  },
-  text: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 18,
-    color: '#181818',
-    flexShrink: 1,
-    width: widthPercentageToDP('80'),
-  },
-  line: {
-    borderBottomColor: '#f4f4f4',
-    width: '100%',
-    borderBottomWidth: 1.7,
-  },
-  topicContainer: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    marginHorizontal: 10,
-    marginVertical: 8,
-    alignItems: 'center',
-  },
-  topic: {
-    alignItems: 'center',
-  },
-  topicText: {
-    width: '80%',
-    textAlign: 'center',
-  },
-  copyright: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 58,
-    color: '#2d3245',
-    marginBottom: -22,
-    top: -13,
-  },
-  space: {
-    height: 30,
-    marginVertical: 10,
-  },
-  modal: {
-    margin: 0,
-    justifyContent: 'flex-end',
-  },
-  modalContainer: {
-    width: '100%',
-    height: heightPercentageToDP('92'),
-    borderTopStartRadius: 12,
-    borderTopEndRadius: 12,
-    backgroundColor: '#44515a',
-  },
-  modalClose: {
-    alignSelf: 'flex-end',
-    marginHorizontal: 12,
-    marginTop: 10,
-  },
-  modalQuestion: {
-    color: '#fdfefb',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 22,
-    marginHorizontal: 10,
-    letterSpacing: 0.7,
-  },
-  modalAnswer: {
-    backgroundColor: '#fff',
-    borderRadius: 10,
-    padding: 10,
-    width: widthPercentageToDP('93'),
-    alignSelf: 'center',
-    marginVertical: 12,
-  },
-  modalTopic: {
-    color: '#fdfefb',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 22,
-    marginHorizontal: 10,
-    letterSpacing: 0.7,
-    textAlign: 'center',
-  },
-  topicModal: {
-    width: '100%',
-    height: heightPercentageToDP('95'),
-    borderTopStartRadius: 12,
-    borderTopEndRadius: 12,
-    backgroundColor: '#fff',
-  },
-  modalTop: {
-    backgroundColor: '#44515a',
-    borderTopStartRadius: 12,
-    borderTopEndRadius: 12,
-    paddingVertical: 8,
-    paddingHorizontal: 7,
-  },
-  topicDescription: {
-    color: '#c7d1d6',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    marginHorizontal: 10,
-    paddingBottom: heightPercentageToDP('13'),
-  },
-  topicCard: {
-    borderRadius: 8,
-    backgroundColor: '#fff',
-    borderTopColor: '#94d2f3',
-    borderTopWidth: 5,
-    borderTopStartRadius: 8,
-    borderTopEndRadius: 8,
-    marginHorizontal: 12,
-    padding: 10,
-    position: 'absolute',
-    top: heightPercentageToDP('13') + heightPercentageToDP('10'),
-    width: widthPercentageToDP('91'),
-    alignSelf: 'center',
-    shadowColor: '#000',
-    shadowOffset: {
-      width: 0,
-      height: 1,
-    },
-    shadowOpacity: 0.22,
-    shadowRadius: 2.22,
-
-    elevation: 3,
-  },
-  footerRow: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    alignItems: 'center',
-    marginHorizontal: 12,
-    marginBottom: 18,
-    marginTop: 10,
-  },
-  modalHeading: {
-    fontFamily: 'Roboto-Black',
-    fontSize: 22,
-    color: '#181818',
-    textAlign: 'center',
-  },
-  contactContainer: {
-    paddingVertical: 10,
-    marginHorizontal: 12,
-    marginVertical: 8,
-  },
-  label: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16.5,
-    color: '#181818',
-  },
-  textInput: {
-    borderColor: '#e2e1e8',
-    borderWidth: 1.5,
-    borderRadius: 6,
-    flexDirection: 'row',
-    alignItems: 'center',
-    paddingHorizontal: 7,
-    marginVertical: 8,
-  },
-  input: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    color: '#181818',
-    width: '92%',
-  },
-  inputMessage: {
-    height: 200,
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    color: '#181818',
-    textAlignVertical: 'top',
-    borderColor: '#e2e1e8',
-    borderWidth: 1.5,
-    borderRadius: 6,
-    width: '100%',
-  },
-});
-
-export default HelpandSupport;
diff --git a/src/Screens/HomeScreen.js b/src/Screens/HomeScreen.js
deleted file mode 100644
index 5b0a42a..0000000
--- a/src/Screens/HomeScreen.js
+++ /dev/null
@@ -1,283 +0,0 @@
-import {
-  Image,
-  StyleSheet,
-  Text,
-  TouchableOpacity,
-  View,
-  VirtualizedList,
-  Pressable,
-} from 'react-native';
-
-import HomeData from '../Utils/HomeData.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-import React, {useState} from 'react';
-import {CoverVideo} from '../Modules';
-import Modal from 'react-native-modal';
-import Orientation from 'react-native-orientation-locker';
-import {useFocusEffect} from '@react-navigation/native';
-import {BottomModal} from '../Modules';
-
-const Option = ({onPress, icon, title}) => {
-  return (
-    <Pressable style={styles.option} onPress={onPress}>
-      <Icon name={icon} color="#282828" size={25} />
-      <Text style={styles.optionText}>{title}</Text>
-    </Pressable>
-  );
-};
-
-const HomeScreen = props => {
-  const [optionModal, setOptionModal] = useState(false);
-  const [profileModal, setProfileModal] = useState(false);
-
-  useFocusEffect(() => {
-    props.navigation.dangerouslyGetParent().setOptions({
-      headerRight: headerProps => (
-        <View style={styles.homeRight}>
-          <TouchableOpacity
-            style={styles.rightButton}
-            onPress={() => props.navigation.navigate('Notifications')}>
-            <Icon name="notifications-outline" color="#282828" size={26} />
-          </TouchableOpacity>
-          <TouchableOpacity
-            style={styles.rightButton}
-            onPress={() => props.navigation.navigate('Search')}>
-            <Icon name="search-outline" color="#282828" size={26} />
-          </TouchableOpacity>
-          <TouchableOpacity
-            style={styles.rightButton}
-            onPress={() => setProfileModal(true)}>
-            <Image
-              source={{
-                uri: 'https://avatars.githubusercontent.com/u/37410529?v=4',
-              }}
-              style={styles.channelAvtar}
-            />
-          </TouchableOpacity>
-        </View>
-      ),
-    });
-  });
-
-  useFocusEffect(() => {
-    Orientation.lockToPortrait();
-  });
-
-  const Comp = ({item, index}) => {
-    return (
-      <CoverVideo
-        onPress={() =>
-          props.navigation.navigate('Player', {
-            videoIndex: index,
-          })
-        }
-        thumbnail={item?.thumb}
-        channelAction={() =>
-          props.navigation.navigate('ChannelScreen', {
-            channelName: item?.channel,
-          })
-        }
-        channelAvtar={'https://s3.envato.com/files/335035895/thumbnail.png'}
-        title={item?.title}
-        channelName={item?.channel}
-        uploaded={item?.uploaded}
-        views={item?.views}
-        action={() => setOptionModal(true)}
-      />
-    );
-  };
-
-  const navScreen = (screenName, params = {}) => {
-    setProfileModal(false);
-    props.navigation.navigate(screenName, params);
-  };
-
-  return (
-    <View style={styles.container}>
-      <VirtualizedList
-        data={HomeData}
-        getItemCount={() => HomeData.length}
-        getItem={(data, index) => data[index]}
-        contentContainerStyle={styles.contentContainer}
-        renderItem={Comp}
-        keyExtractor={(item, index) => index.toString()}
-      />
-      <Modal
-        isVisible={optionModal}
-        style={styles.modal}
-        onBackdropPress={() => setOptionModal(!optionModal)}
-        onBackButtonClick={() => setOptionModal(!optionModal)}>
-        <View style={styles.modalContainer}>
-          <View style={styles.modalLine} />
-          <View style={styles.modalHeader}>
-            <Text style={styles.modalHeading}>Options</Text>
-            <Pressable onPress={() => setOptionModal(!optionModal)}>
-              <Icon name="close-outline" color="#282828" size={26} />
-            </Pressable>
-          </View>
-          <Pressable style={styles.button}>
-            <Icon name="time-outline" color="#282828" size={24} />
-            <Text style={styles.buttonText}>Save to Watch later</Text>
-          </Pressable>
-          <Pressable style={styles.button}>
-            <Icon name="flag-outline" color="#282828" size={24} />
-            <Text style={styles.buttonText}>Report</Text>
-          </Pressable>
-        </View>
-      </Modal>
-      <BottomModal
-        isVisible={profileModal}
-        dismiss={() => setProfileModal(false)}>
-        <View style={styles.optionContainer}>
-          <Option
-            title="Settings"
-            icon="settings-outline"
-            onPress={() => navScreen('Settings')}
-          />
-          <Option
-            title="Watch later"
-            icon="time-outline"
-            onPress={() =>
-              navScreen('VideosScreen', {
-                screenName: 'Watch Later',
-                listId: 1,
-              })
-            }
-          />
-          <Option
-            title="History"
-            icon="refresh-outline"
-            onPress={() =>
-              navScreen('VideosScreen', {
-                screenName: 'History',
-                listId: 2,
-              })
-            }
-          />
-          <Option
-            title="Help & feedback"
-            icon="help-circle-outline"
-            onPress={() => navScreen('Help')}
-          />
-          <Option
-            title="Privacy policy"
-            icon="shield-checkmark-outline"
-            onPress={() => navScreen('PrivacyPolicy')}
-          />
-          <Option
-            title="Terms & Conditions"
-            icon="reader-outline"
-            onPress={() => navScreen('Terms')}
-          />
-          <Option
-            title="About US HTML"
-            icon="information-circle-outline"
-            onPress={() => navScreen('AboutUs')}
-          />
-          <Option
-            title="About us RN"
-            icon="information-circle-outline"
-            onPress={() => navScreen('AboutComp')}
-          />
-          <Option
-            title="Login"
-            icon="log-in-outline"
-            onPress={() => navScreen('Login')}
-          />
-          <Option title="Logout" icon="log-out-outline" />
-        </View>
-      </BottomModal>
-      <View style={styles.margin} />
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  contentContainer: {
-    flexGrow: 1,
-  },
-  channelAvtar: {
-    width: 28,
-    height: 28,
-    borderRadius: 28 / 2,
-  },
-
-  modal: {
-    margin: 0,
-    justifyContent: 'flex-end',
-  },
-  modalContainer: {
-    backgroundColor: '#fff',
-    borderTopLeftRadius: 12,
-    borderTopRightRadius: 12,
-    padding: 4,
-  },
-  button: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginHorizontal: 10,
-    marginVertical: 8,
-  },
-  buttonText: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 18,
-    marginHorizontal: 6,
-  },
-  modalLine: {
-    borderBottomWidth: 4,
-    borderBottomColor: '#282828',
-    width: '11%',
-    alignSelf: 'center',
-    borderRadius: 10,
-    marginVertical: 6,
-    opacity: 0.7,
-  },
-  modalHeader: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    alignItems: 'baseline',
-    marginBottom: 4,
-  },
-  modalHeading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 20,
-    marginHorizontal: 10,
-  },
-  margin: {
-    marginBottom: 48,
-  },
-  homeRight: {
-    flex: 1,
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginHorizontal: 10,
-    justifyContent: 'space-around',
-  },
-  rightButton: {
-    marginHorizontal: 8,
-    width: 30,
-    height: 30,
-    borderRadius: 30 / 2,
-  },
-  optionContainer: {
-    marginHorizontal: 11,
-    marginBottom: 4,
-  },
-  option: {
-    flexDirection: 'row',
-    marginVertical: 5,
-    padding: 5,
-  },
-  optionText: {
-    fontFamily: 'Roboto-Light',
-    marginLeft: 10,
-    fontSize: 18,
-    color: '#212121',
-  },
-});
-
-export default HomeScreen;
diff --git a/src/Screens/Library.js b/src/Screens/Library.js
deleted file mode 100644
index 7d51018..0000000
--- a/src/Screens/Library.js
+++ /dev/null
@@ -1,177 +0,0 @@
-import React, {useEffect, useState} from 'react';
-import {
-  View,
-  Text,
-  ImageBackground,
-  ActivityIndicator,
-  StyleSheet,
-  Dimensions,
-  Pressable,
-  ScrollView,
-} from 'react-native';
-import Videos from '../Utils/HomeData.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-
-const {height} = Dimensions.get('window');
-
-const Component = ({onPress, thumbnail, text, icon, videos}) => {
-  return (
-    <Pressable onPress={onPress}>
-      <ImageBackground
-        source={{uri: thumbnail}}
-        style={styles.background}
-        resizeMode="cover">
-        <View style={styles.overlay} />
-        <View style={styles.descContainer}>
-          <Icon name={icon} color="#fff" size={32} />
-          {videos && (
-            <View>
-              <Text style={styles.title}>{text}</Text>
-              <Text style={styles.totalVideos}>{`${videos} Videos`}</Text>
-            </View>
-          )}
-          <View />
-        </View>
-      </ImageBackground>
-    </Pressable>
-  );
-};
-
-const Library = props => {
-  const [subscription, setSubscription] = useState(null);
-  const [watchLater, setWatchLater] = useState(null);
-  const [recentWatch, setRecentWatch] = useState(null);
-  const [downloads, setDownloads] = useState(null);
-  const [likedVideos, setLikedVideos] = useState(null);
-  const [isLoading, setIsLoading] = useState(true);
-
-  useEffect(() => {
-    let isMounted = true;
-    const setStates = () => {
-      if (isMounted) {
-        setSubscription(Videos[Math.floor(Math.random() * Videos.length)]);
-        setWatchLater(Videos[Math.floor(Math.random() * Videos.length)]);
-        setDownloads(Videos[Math.floor(Math.random() * Videos.length)]);
-        setLikedVideos(Videos[Math.floor(Math.random() * Videos.length)]);
-        setRecentWatch(Videos[Math.floor(Math.random() * Videos.length)]);
-        setIsLoading(false);
-      }
-    };
-    setStates();
-    return () => {
-      isMounted = false;
-    };
-  }, []);
-
-  const screenNavigator = screenTitle => {
-    props.navigation.navigate('VideosScreen', {
-      screenName: screenTitle,
-      listId: 1,
-    });
-  };
-
-  if (isLoading) {
-    return (
-      <View>
-        <ActivityIndicator size="large" color="#212121" />
-      </View>
-    );
-  }
-
-  return (
-    <ScrollView
-      style={styles.container}
-      contentContainerStyle={styles.contentContainer}
-      showsVerticalScrollIndicator={false}>
-      <Component
-        thumbnail={subscription?.thumb}
-        text="Following"
-        icon="checkmark-done-outline"
-        videos={12}
-        onPress={() => screenNavigator('Following')}
-      />
-      <Component
-        thumbnail={watchLater?.thumb}
-        text="Watch Later"
-        icon="time-outline"
-        videos={12}
-        onPress={() => screenNavigator('Watch Later')}
-      />
-      <Component
-        thumbnail={recentWatch?.thumb}
-        text="Recently Watched"
-        icon="calendar-outline"
-        videos={12}
-        onPress={() => screenNavigator('Recently Watched')}
-      />
-      <Component
-        thumbnail={downloads?.thumb}
-        text="Downloaded"
-        icon="download-outline"
-        videos={12}
-        onPress={() => screenNavigator('Downloading')}
-      />
-      <Component
-        thumbnail={likedVideos?.thumb}
-        text="Liked"
-        icon="heart-outline"
-        videos={12}
-        onPress={() => screenNavigator('Liked')}
-      />
-      <View style={styles.space} />
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-  },
-  contentContainer: {
-    flexGrow: 1,
-    backgroundColor: '#fff',
-  },
-  loaderContainer: {
-    flex: 1,
-    backgroundColor: '#fff',
-    justifyContent: 'center',
-    alignItems: 'center',
-  },
-  background: {
-    width: '100%',
-    height: height / 5,
-    justifyContent: 'center',
-  },
-  title: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 25,
-    color: '#fff',
-    marginHorizontal: 8,
-  },
-  overlay: {
-    position: 'absolute',
-    top: 0,
-    right: 0,
-    bottom: 0,
-    left: 0,
-    justifyContent: 'center',
-    alignItems: 'center',
-    backgroundColor: 'rgba(0,0,0,0.7)',
-  },
-  descContainer: {
-    marginHorizontal: 10,
-    flexDirection: 'row',
-    alignItems: 'center',
-  },
-  totalVideos: {
-    color: '#04abf2',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    marginHorizontal: 10,
-  },
-  space: {
-    height: 48,
-  },
-});
-
-export default Library;
diff --git a/src/Screens/Login.js b/src/Screens/Login.js
deleted file mode 100644
index 3c9e97a..0000000
--- a/src/Screens/Login.js
+++ /dev/null
@@ -1,173 +0,0 @@
-import React from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  Image,
-  TextInput,
-  ScrollView,
-  Pressable,
-} from 'react-native';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {Button} from '../Modules';
-import {heightPercentageToDP, widthPercentageToDP} from '../Utils/DpToPixel';
-import {displayName} from '../../app.json';
-
-export const Input = ({
-  placeholder,
-  icon,
-  value,
-  onChange,
-  securePass,
-  isPass,
-  secureChange,
-}) => {
-  return (
-    <View style={styles.inputContainer}>
-      <Icon color="#9097a3" size={24} name={icon} />
-      <TextInput
-        placeholder={placeholder}
-        placeholderTextColor="#9097a3"
-        value={value}
-        onChangeText={onChange}
-        style={styles.input}
-        secureTextEntry={securePass}
-      />
-      {isPass && (
-        <Pressable onPress={secureChange}>
-          <Icon
-            name={securePass ? 'eye-off-outline' : 'eye-outline'}
-            color="#9097a3"
-            size={23}
-          />
-        </Pressable>
-      )}
-    </View>
-  );
-};
-
-const Login = props => {
-  return (
-    <ScrollView style={styles.container}>
-      <Image
-        source={require('../../assets/login.png')}
-        style={styles.loginImage}
-        resizeMode="contain"
-      />
-      <View style={styles.contentContainer}>
-        <Text style={styles.heading}>Login</Text>
-        <Input placeholder="Email ID" icon="at-outline" />
-        <Input placeholder="Password" icon="lock-closed-outline" />
-        <Button
-          title="Login"
-          styleProps={styles.button}
-          textStyle={styles.buttonText}
-        />
-        <Text style={styles.loginWith}>Or, login with</Text>
-        <View style={styles.socialContainer}>
-          <View style={styles.socialButton}>
-            <Icon size={28} name="logo-google" color="#242526" />
-          </View>
-          <View style={styles.socialButton}>
-            <Icon size={28} name="logo-facebook" color="#1877f2" />
-          </View>
-          <View style={styles.socialButton}>
-            <Icon size={28} name="logo-twitter" color="#1DA1F2" />
-          </View>
-        </View>
-        <View style={styles.row}>
-          <Text style={styles.loginWith}>New to {displayName}?</Text>
-          <Pressable onPress={() => props.navigation.navigate('Signup')}>
-            <Text style={styles.link}>Register</Text>
-          </Pressable>
-        </View>
-      </View>
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  contentContainer: {
-    marginHorizontal: 15,
-  },
-  heading: {
-    color: '#192948',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 28,
-    marginVertical: 15,
-  },
-  loginImage: {
-    width: widthPercentageToDP('100%'),
-    height: heightPercentageToDP('34%'),
-  },
-  inputContainer: {
-    borderBottomColor: '#e4e6e5',
-    borderBottomWidth: 1,
-    width: '100%',
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginVertical: 8,
-  },
-  input: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#212121',
-    width: widthPercentageToDP('80'),
-  },
-  button: {
-    backgroundColor: '#0165ff',
-    borderWidth: 0,
-    width: widthPercentageToDP('85'),
-    height: heightPercentageToDP('6'),
-  },
-  buttonText: {
-    color: '#fff',
-  },
-  loginWith: {
-    textAlign: 'center',
-    color: '#9097a3',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-  },
-  socialButton: {
-    borderColor: '#e4e6e5',
-    borderWidth: 1.4,
-    width: widthPercentageToDP('25'),
-    height: heightPercentageToDP('7'),
-    borderRadius: 10,
-    justifyContent: 'center',
-    alignItems: 'center',
-    padding: 8,
-  },
-  logo: {
-    width: 30,
-    height: 30,
-  },
-  socialContainer: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    justifyContent: 'space-between',
-    width: widthPercentageToDP('80'),
-    alignSelf: 'center',
-    marginVertical: 15,
-  },
-  link: {
-    color: '#2862ab',
-    textAlign: 'center',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    marginHorizontal: 8,
-  },
-  row: {
-    flexDirection: 'row',
-    alignSelf: 'center',
-    alignItems: 'center',
-    paddingBottom: 10,
-  },
-});
-
-export default Login;
diff --git a/src/Screens/Notifications.js b/src/Screens/Notifications.js
deleted file mode 100644
index 99c691d..0000000
--- a/src/Screens/Notifications.js
+++ /dev/null
@@ -1,127 +0,0 @@
-import React, {useEffect, useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  Pressable,
-  VirtualizedList,
-  Image,
-} from 'react-native';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {widthPercentageToDP} from '../Utils/DpToPixel';
-import {Loader} from '../Modules';
-import Data from '../Utils/Notifications';
-
-const Notifications = props => {
-  const [data, setData] = useState(null);
-  const [isLoading, setIsLoading] = useState(true);
-
-  useEffect(() => {
-    let isMounted = true;
-    const getWords = () => {
-      if (isMounted && data === null) {
-        setData(Data);
-        setIsLoading(false);
-      }
-    };
-    getWords();
-    return () => {
-      isMounted = false;
-    };
-  }, [isLoading, data]);
-
-  if (isLoading) {
-    return <Loader />;
-  }
-
-  const WordComp = ({item}) => {
-    return (
-      <Pressable style={styles.notificationContainer}>
-        <Image source={{uri: item?.channelAvtar}} style={styles.avtar} />
-        <Text numberOfLines={2} style={styles.title}>
-          {item?.notification}
-        </Text>
-        <Image
-          source={{uri: item?.image}}
-          style={styles.thumbnail}
-          resizeMode="cover"
-        />
-      </Pressable>
-    );
-  };
-
-  const EmptyComp = () => {
-    return (
-      <View style={styles.emptyContainer}>
-        <Icon name="notifications-outline" color="#192948" size={150} />
-        <Text style={styles.emptyHeading}>Your notifications livehere</Text>
-        <Text style={styles.emptyText}>
-          Follow your favorite channels, or upload your favorite videos to get
-          latest notifications here
-        </Text>
-      </View>
-    );
-  };
-
-  return (
-    <VirtualizedList
-      data={data}
-      style={styles.container}
-      getItemCount={() => data.length}
-      getItem={(item, index) => item[index]}
-      renderItem={WordComp}
-      keyExtractor={(item, index) => index?.toString()}
-      ListEmptyComponent={EmptyComp}
-    />
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  notificationContainer: {
-    flexDirection: 'row',
-    marginHorizontal: 8,
-    alignItems: 'center',
-    marginVertical: 10,
-  },
-  title: {
-    fontFamily: 'Roboto-Medium',
-    color: '#212121',
-    fontSize: 15,
-    marginHorizontal: 8,
-    width: widthPercentageToDP('50'),
-  },
-  avtar: {
-    width: 50,
-    height: 50,
-    borderRadius: 25,
-  },
-  thumbnail: {
-    width: 120,
-    height: 65,
-    borderRadius: 3,
-  },
-  emptyContainer: {
-    flex: 1,
-    backgroundColor: '#fff',
-    justifyContent: 'center',
-    alignItems: 'center',
-  },
-  emptyHeading: {
-    color: '#181818',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 24,
-  },
-  emptyText: {
-    color: '#606060',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    textAlign: 'center',
-    marginHorizontal: 10,
-  },
-});
-
-export default Notifications;
diff --git a/src/Screens/Player.js b/src/Screens/Player.js
deleted file mode 100644
index f3fbb88..0000000
--- a/src/Screens/Player.js
+++ /dev/null
@@ -1,920 +0,0 @@
-/* eslint-disable react-native/no-inline-styles */
-import React, {useCallback, useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  ActivityIndicator,
-  Pressable,
-  TouchableOpacity,
-  StatusBar,
-  BackHandler,
-  Image,
-  TextInput,
-  VirtualizedList,
-  ScrollView,
-} from 'react-native';
-import HomeData from '../Utils/HomeData.json';
-import Video from 'react-native-video';
-import Icon from 'react-native-vector-icons/Ionicons';
-import Orientation from 'react-native-orientation-locker';
-import {StackActions, useFocusEffect} from '@react-navigation/native';
-import {ProgressView} from '@react-native-community/progress-view';
-import Modal from 'react-native-modal';
-import CommentsData from '../Utils/Comments.json';
-import {numberFormat, numberSeperator, getMonthString} from '../Utils/Util';
-import {heightPercentageToDP} from '../Utils/DpToPixel';
-import {BottomModal} from '../Modules';
-
-const Player = props => {
-  const {videoIndex} = props.route.params;
-  const [paused, setPause] = useState(false);
-  const [showControls, setShowControls] = useState(false);
-  const [fullScreen, setFullScreen] = useState(false);
-  const [isLoading, setIsLoading] = useState(true);
-  const [currentProgress, setCurrentProgress] = useState(0);
-  const [videoDuration, setVideoDuration] = useState(0);
-  const [videoLength, setVideoLength] = useState(0);
-  const [progressBar, setProgressBar] = useState(0);
-  const [videoTime, setVideoTime] = useState(0);
-  const [commentModal, setCommentModal] = useState(false);
-  const [textInputModal, setTextInputModal] = useState(false);
-  const [commentText, setCommentText] = useState('');
-  const [descModal, setDescModal] = useState(false);
-  const [downloadModal, setDownloadModal] = useState(false);
-  const [videoDetail, setVideoDetail] = useState({
-    liked: false,
-    disliked: false,
-    saved: false,
-  });
-  const data = HomeData[videoIndex];
-
-  if (fullScreen) {
-    Orientation.lockToLandscape();
-  } else {
-    Orientation.lockToPortrait();
-  }
-
-  const bufferConfig = {
-    minBufferMs: 15000,
-    maxBufferMs: 60000,
-    bufferForPlaybackMs: 2500,
-    bufferForPlaybackAfterRebufferMs: 5000,
-  };
-
-  useFocusEffect(
-    useCallback(() => {
-      const onHardwareBack = () => {
-        if (fullScreen) {
-          setFullScreen(false);
-          return true;
-        } else if (descModal || commentModal) {
-          setCommentModal(false);
-          setDescModal(false);
-          return;
-        } else {
-          props.navigation.dispatch(
-            StackActions.replace('Main', {screen: 'Home'}),
-          );
-        }
-      };
-      BackHandler.addEventListener('hardwareBackPress', onHardwareBack);
-      return () =>
-        BackHandler.removeEventListener('hardwareBackPress', onHardwareBack);
-    }, [fullScreen, props.navigation, descModal, commentModal]),
-  );
-
-  const buffering = event => {
-    setIsLoading(event?.isBuffering ? true : false);
-  };
-
-  useFocusEffect(
-    useCallback(() => {
-      const onBlur = () => {
-        setPause(true);
-      };
-      props.navigation.addListener('blur', onBlur);
-      return () => props.navigation.removeListener('blur', onBlur);
-    }, [props.navigation]),
-  );
-
-  const videoLoading = payload => {
-    setIsLoading(false);
-    setVideoTime(payload?.duration);
-    if (payload?.duration > 60) {
-      if (payload?.duration / 60 > 60) {
-        setVideoDuration(`${(payload?.duration / 3600).toFixed()}:00:00`);
-        setVideoLength('hour');
-        return;
-      } else {
-        setVideoDuration(`${(payload?.duration / 60).toFixed()}:00`);
-        setVideoLength('minutes');
-        return;
-      }
-    } else {
-      setVideoDuration(payload?.duration);
-      setVideoLength('seconds');
-      return false;
-    }
-  };
-
-  const VideoProgress = () => {
-    return (
-      <View style={styles.time}>
-        <Text
-          style={
-            styles.timeText
-          }>{`${currentProgress} / ${videoDuration}`}</Text>
-      </View>
-    );
-  };
-
-  const progressHandler = payload => {
-    setProgressBar(parseFloat(payload?.currentTime) / parseFloat(videoTime));
-    if (videoLength === 'hour') {
-      setCurrentProgress(payload?.currentTime);
-      return;
-    } else if (videoLength === 'minutes') {
-      setCurrentProgress(
-        new Date(payload?.currentTime * 1000).toISOString().substr(14, 5),
-      );
-    } else {
-      setCurrentProgress(
-        new Date(payload?.currentTime * 1000).toISOString().substr(17, 2),
-      );
-    }
-  };
-
-  const renderedItems = ({item, index}) => {
-    return (
-      <Pressable
-        onPress={() =>
-          props.navigation.navigate('Player', {
-            videoIndex: index,
-          })
-        }
-        style={styles.autoPlayContainer}>
-        <Image
-          source={{
-            uri: item?.thumb,
-          }}
-          resizeMode="cover"
-          style={styles.thumbnail}
-        />
-        <View style={styles.detailContainer}>
-          <View style={styles.titleContainer}>
-            <Text style={styles.listVideoTitle} numberOfLines={2}>
-              {item?.title}
-            </Text>
-            <Text style={styles.videoDescription} numberOfLines={2}>
-              {`${item?.views} views . ${
-                item?.uploaded === 'just now'
-                  ? 'just now'
-                  : `${item?.uploaded} ago`
-              }`}
-            </Text>
-          </View>
-        </View>
-      </Pressable>
-    );
-  };
-
-  const HeaderComp = () => {
-    return (
-      <View>
-        <View style={styles.descHead}>
-          <Text style={styles.heading} numberOfLines={2}>
-            {data?.title}
-          </Text>
-          <Pressable onPress={() => setDescModal(true)}>
-            <Icon name="chevron-down-outline" color="#040201" size={24} />
-          </Pressable>
-        </View>
-        <Text style={styles.videoDesc} numberOfLines={2}>
-          {`${numberFormat(data?.views)} views . ${
-            data?.uploaded === 'just now' ? 'just now' : `${data?.uploaded} ago`
-          }`}
-        </Text>
-        <View style={styles.optionsContainer}>
-          <Pressable
-            style={styles.option}
-            onPress={() =>
-              setVideoDetail({...videoDetail, liked: !videoDetail.liked})
-            }>
-            <Icon
-              name={videoDetail?.liked ? 'heart' : 'heart-outline'}
-              color={videoDetail?.liked ? '#F25252' : '"#040201"'}
-              size={30}
-            />
-            <Text style={styles.optionCounter}>
-              {numberFormat(data?.likes)}
-            </Text>
-          </Pressable>
-          <Pressable
-            style={styles.option}
-            onPress={() =>
-              setVideoDetail({...videoDetail, disliked: !videoDetail.disliked})
-            }>
-            <Icon
-              name={
-                videoDetail?.disliked
-                  ? 'heart-dislike'
-                  : 'heart-dislike-outline'
-              }
-              color="#040201"
-              size={30}
-            />
-            <Text style={styles.optionCounter}>{data?.dislikes}</Text>
-          </Pressable>
-          <Pressable style={styles.option}>
-            <Icon name="share-social-outline" color="#040201" size={30} />
-            <Text style={styles.optionCounter}>Share</Text>
-          </Pressable>
-          <Pressable
-            style={styles.option}
-            onPress={() => setDownloadModal(true)}>
-            <Icon name="download-outline" color="#040201" size={30} />
-            <Text style={styles.optionCounter}>Download</Text>
-          </Pressable>
-          <Pressable
-            style={styles.option}
-            onPress={() =>
-              setVideoDetail({...videoDetail, saved: !videoDetail.saved})
-            }>
-            <Icon
-              name={videoDetail?.saved ? 'bookmark' : 'bookmark-outline'}
-              color={videoDetail?.saved ? '#04abf2' : '#040201'}
-              size={30}
-            />
-            <Text style={styles.optionCounter}>Save</Text>
-          </Pressable>
-        </View>
-        <View style={styles.seperator} />
-        <View style={styles.channelContainer}>
-          <TouchableOpacity
-            style={styles.channel}
-            onPress={() =>
-              props.navigation.navigate('ChannelScreen', {
-                channelName: data?.channel,
-                channelIndex: data?.channelId,
-              })
-            }>
-            <Image
-              source={{
-                uri: 'https://s3.envato.com/files/335035895/thumbnail.png',
-              }}
-              style={styles.channelAvtar}
-            />
-            <Text style={styles.channelName}>{data?.channel}</Text>
-          </TouchableOpacity>
-          <TouchableOpacity style={styles.followButton}>
-            <Text style={styles.followText}>Follow</Text>
-          </TouchableOpacity>
-        </View>
-        <View style={styles.seperator} />
-        <Pressable
-          style={styles.commentContainer}
-          onPress={() => setCommentModal(true)}>
-          <View style={styles.descHead}>
-            <Text style={styles.commentText}>
-              Comments <Text style={styles.commentCount}>23</Text>
-            </Text>
-            <Icon name="ellipsis-horizontal" color="#040201" size={24} />
-          </View>
-          <View style={styles.commentAccount}>
-            <Image
-              source={{uri: 'https://picsum.photos/200/300'}}
-              style={styles.commentAvtar}
-            />
-            <Text style={styles.userCommentText}>
-              This is the dummy comment
-            </Text>
-          </View>
-        </Pressable>
-        <View style={styles.seperator} />
-      </View>
-    );
-  };
-
-  const AutoFooter = () => {
-    return <View />;
-  };
-
-  return (
-    <View style={styles.container}>
-      <StatusBar hidden={fullScreen} />
-      <Pressable
-        style={!fullScreen ? styles.player : styles.fullScreenVideo}
-        onPress={() => setShowControls(!showControls)}>
-        <Video
-          source={{
-            uri: data?.sources[0],
-          }}
-          style={styles.backgroundVideo}
-          onBuffer={e => buffering(e)}
-          bufferConfig={bufferConfig}
-          resizeMode={fullScreen ? 'cover' : 'contain'}
-          paused={paused}
-          playInBackground={false}
-          onLoad={payload => videoLoading(payload)}
-          fullscreen={fullScreen}
-          onProgress={e => progressHandler(e)}
-          fullscreenOrientation="landscape"
-        />
-      </Pressable>
-      {showControls && (
-        <Pressable
-          style={
-            !fullScreen
-              ? styles.controller
-              : {...styles.controller, width: '100%', height: '100%'}
-          }
-          onPress={() => setShowControls(!showControls)}>
-          <TouchableOpacity
-            style={styles.fullScreen}
-            onPress={() => setFullScreen(!fullScreen)}>
-            <Icon name={'scan-outline'} color="#fff" size={30} />
-          </TouchableOpacity>
-          <TouchableOpacity
-            style={
-              !fullScreen
-                ? styles.playButton
-                : {alignSelf: 'center', top: '39%'}
-            }
-            onPress={() => setPause(!paused)}>
-            <Icon
-              name={paused ? 'play-outline' : 'pause-outline'}
-              color="#fff"
-              size={45}
-            />
-          </TouchableOpacity>
-          <View style={styles.videoProgress}>{VideoProgress()}</View>
-        </Pressable>
-      )}
-      <ProgressView
-        style={styles.progressBar}
-        progressTintColor="#04abf2"
-        trackTintColor="#898887"
-        progress={progressBar}
-      />
-      {isLoading && (
-        <ActivityIndicator
-          color="#fff"
-          size="large"
-          style={styles.controller}
-        />
-      )}
-      {!fullScreen && (
-        <VirtualizedList
-          data={HomeData}
-          getItemCount={() => HomeData.length}
-          getItem={(item, index) => item[index]}
-          contentContainerStyle={styles.descContainer}
-          ListFooterComponent={AutoFooter}
-          ListFooterComponentStyle={{height: 15}}
-          ListHeaderComponent={HeaderComp}
-          renderItem={renderedItems}
-          keyExtractor={(item, index) => index.toString()}
-        />
-      )}
-      <Modal
-        isVisible={commentModal}
-        style={styles.modal}
-        hasBackdrop={false}
-        coverScreen={false}>
-        <View style={styles.modalView}>
-          <View style={styles.modalHead}>
-            <Text style={styles.modalHeading}>
-              Comments{' '}
-              {data?.totalComments && (
-                <Text style={styles.commentCount}>{data?.totalComments}</Text>
-              )}
-            </Text>
-            <TouchableOpacity
-              style={styles.modalClose}
-              onPress={() => setCommentModal(false)}>
-              <Icon name="close-outline" size={28} color="#040201" />
-            </TouchableOpacity>
-          </View>
-          <Pressable
-            style={styles.commentBox}
-            onPress={() => setTextInputModal(true)}>
-            <Image
-              source={{
-                uri: 'https://avatars.githubusercontent.com/u/37410529?v=4',
-              }}
-              style={styles.channelAvtar}
-            />
-            <Text style={styles.inputCommentText}>Write your comment</Text>
-          </Pressable>
-          <View style={styles.seperator} />
-          <VirtualizedList
-            data={CommentsData}
-            getItemCount={() => CommentsData.length}
-            getItem={(item, index) => item[index]}
-            keyExtractor={(item, index) => index.toString()}
-            renderItem={({item}) => {
-              return (
-                <View style={styles.userCommentContainer}>
-                  <Image
-                    source={{uri: item?.profileAvtar}}
-                    style={styles.channelAvtar}
-                    resizeMode="cover"
-                  />
-                  <View>
-                    <Text style={styles.userCommentText}>
-                      {item?.username} .{' '}
-                      <Text style={styles.commentCount}>2 days ago</Text>
-                    </Text>
-                    <Text style={styles.commentStyle} numberOfLines={1}>
-                      {item?.comment}
-                    </Text>
-                    <View style={styles.inlineOptionContainer}>
-                      <View style={styles.inlineOption}>
-                        <Icon name="heart-outline" color="#040201" size={22} />
-                        <Text style={styles.inlineOptionCounter}>
-                          {item?.likes}
-                        </Text>
-                      </View>
-                      <Text style={styles.dot}>.</Text>
-                      <View style={styles.inlineOption}>
-                        <Icon
-                          name="heart-dislike-outline"
-                          color="#040201"
-                          size={22}
-                        />
-                        <Text style={styles.inlineOptionCounter}>
-                          {item?.dislikes}
-                        </Text>
-                      </View>
-                    </View>
-                  </View>
-                </View>
-              );
-            }}
-            ItemSeparatorComponent={() => <View style={styles.seperator} />}
-          />
-        </View>
-        <Modal
-          style={styles.modal}
-          isVisible={textInputModal}
-          onBackdropPress={() => setTextInputModal(false)}
-          onBackButtonPress={() => setTextInputModal(false)}>
-          <View style={styles.textInputContainer}>
-            <Image
-              source={{
-                uri: 'https://avatars.githubusercontent.com/u/37410529?v=4',
-              }}
-              style={styles.channelAvtar}
-            />
-            <TextInput
-              style={styles.input}
-              placeholder="Write your comment"
-              placeholdercolor="#9c9c9c"
-              onChangeText={val => setCommentText(val)}
-              autoCompleteType="off"
-              autoCorrect={false}
-              multiline
-            />
-            {commentText.length !== 0 && (
-              <Icon name="paper-plane" size={28} color="#04abf2" />
-            )}
-          </View>
-        </Modal>
-      </Modal>
-      <Modal
-        isVisible={descModal}
-        style={styles.modal}
-        hasBackdrop={false}
-        coverScreen={false}
-        propagateSwipe={true}
-        scrollOffset={1}
-        scrollTo={() => {}}
-        useNativeDriverForBackdrop
-        swipeDirection="down"
-        onSwipeComplete={() => setDescModal(false)}
-        onBackButtonPress={() => setDescModal(false)}>
-        <View style={styles.descModalView}>
-          <View style={styles.descModalHead}>
-            <View style={styles.modalLine} />
-            <View style={styles.descHeader}>
-              <Text style={styles.modalHeading}>Description</Text>
-              <TouchableOpacity
-                style={styles.modalClose}
-                onPress={() => setDescModal(false)}>
-                <Icon name="close-outline" size={28} color="#040201" />
-              </TouchableOpacity>
-            </View>
-          </View>
-          <ScrollView
-            style={{flex: 1}}
-            contentContainerStyle={{flexGrow: 1, margin: 10}}>
-            <Text style={styles.videoTitle}>{data?.title}</Text>
-            <View style={styles.optionsContainer}>
-              <View style={styles.option}>
-                <Text style={styles.modalCounter}>
-                  {numberFormat(data?.likes)}
-                </Text>
-                <Text style={styles.modalOptionDesc}>Likes</Text>
-              </View>
-              <View style={styles.option}>
-                <Text style={styles.modalCounter}>
-                  {numberSeperator(data?.views)}
-                </Text>
-                <Text style={styles.modalOptionDesc}>Views</Text>
-              </View>
-              <View style={styles.option}>
-                <Text style={styles.modalCounter}>
-                  {new Date(data?.uploadedDate).getFullYear()}
-                </Text>
-                <Text style={styles.modalOptionDesc}>
-                  {`${getMonthString(
-                    new Date(data?.uploadedDate).getUTCMonth(),
-                  )} ${new Date(data?.uploadedDate).getDate()}`}
-                </Text>
-              </View>
-            </View>
-            <View style={styles.seperator} />
-            <Text style={styles.descContent}>{data?.description}</Text>
-          </ScrollView>
-        </View>
-      </Modal>
-      <BottomModal
-        isVisible={downloadModal}
-        dismiss={() => setDownloadModal(false)}>
-        <Text style={styles.downloadHeading}>Select</Text>
-        <View style={styles.qualityContainer}>
-          <Pressable>
-            <Text style={styles.qualityText}>140p</Text>
-          </Pressable>
-          <Pressable>
-            <Text style={styles.qualityText}>360p</Text>
-          </Pressable>
-          <Pressable>
-            <Text style={styles.qualityText}>480p</Text>
-          </Pressable>
-          <Pressable>
-            <Text style={styles.qualityText}>720p</Text>
-          </Pressable>
-          <Pressable>
-            <Text style={styles.qualityText}>1080p</Text>
-          </Pressable>
-        </View>
-      </BottomModal>
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-  },
-  player: {
-    height: '35%',
-  },
-  backgroundVideo: {
-    height: '100%',
-    width: '100%',
-    flex: 1,
-    top: 0,
-    backgroundColor: '#000',
-  },
-  controller: {
-    backgroundColor: 'rgba(0, 0, 0, 0.5)',
-    position: 'absolute',
-    flex: 1,
-    width: '100%',
-    height: '35%',
-  },
-  playButton: {
-    alignSelf: 'center',
-    top: '25%',
-  },
-  fullScreenVideo: {
-    flex: 1,
-    width: '100%',
-  },
-  fullScreen: {
-    alignSelf: 'flex-end',
-    marginVertical: 10,
-    marginHorizontal: 10,
-  },
-  heading: {
-    color: '#040201',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 18,
-    letterSpacing: 0.2,
-  },
-  descContainer: {marginVertical: 10},
-  descHead: {
-    marginHorizontal: 10,
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-  },
-  time: {
-    position: 'absolute',
-  },
-  timeText: {
-    color: '#fff',
-  },
-  videoProgress: {
-    position: 'absolute',
-    bottom: '8%',
-  },
-  progressBar: {
-    position: 'absolute',
-    top: '33.5%',
-  },
-  videoDesc: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 12,
-    letterSpacing: 0.2,
-    color: '#9c9c9c',
-    marginHorizontal: 10,
-  },
-  optionsContainer: {
-    flexDirection: 'row',
-    marginVertical: 10,
-    justifyContent: 'space-between',
-    marginHorizontal: 10,
-    alignItems: 'center',
-  },
-  option: {
-    flexDirection: 'column',
-    alignItems: 'center',
-  },
-  optionCounter: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    color: '#040201',
-  },
-  seperator: {
-    borderBottomWidth: 1.5,
-    borderBottomColor: '#dfdfdf',
-    width: '100%',
-  },
-  channelContainer: {
-    marginVertical: 10,
-    marginHorizontal: 10,
-    flexDirection: 'row',
-    alignItems: 'center',
-    width: '100%',
-    justifyContent: 'space-between',
-  },
-  channelAvtar: {
-    width: 40,
-    height: 40,
-    borderRadius: 20,
-  },
-  channelName: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    marginHorizontal: 10,
-  },
-  followButton: {
-    backgroundColor: '#04abf2',
-    width: '25%',
-    height: 40,
-    borderRadius: 6,
-    justifyContent: 'center',
-    alignItems: 'center',
-    marginHorizontal: 18,
-  },
-  followText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    color: '#fff',
-    letterSpacing: 0.1,
-  },
-  channel: {
-    flexDirection: 'row',
-    alignItems: 'center',
-  },
-  commentContainer: {
-    marginVertical: 6,
-    marginHorizontal: 10,
-  },
-  commentText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    color: '#040201',
-  },
-  commentCount: {
-    color: 'rgba(4, 2, 1, 0.7)',
-  },
-  commentAccount: {
-    flexDirection: 'row',
-    alignItems: 'center',
-  },
-  commentAvtar: {
-    width: 35,
-    height: 35,
-    borderRadius: 35 / 2,
-  },
-  userCommentText: {
-    marginHorizontal: 10,
-    fontFamily: 'Roboto-Medium',
-    fontSize: 13,
-    color: '#040201',
-  },
-  modal: {
-    justifyContent: 'flex-end',
-    margin: 0,
-    height: '65%',
-  },
-  modalView: {
-    backgroundColor: '#fff',
-    height: '65%',
-  },
-  modalHead: {
-    flexDirection: 'row',
-    width: '100%',
-    height: '10%',
-    shadowColor: '#000',
-    shadowOffset: {
-      width: 0,
-      height: 2,
-    },
-    shadowOpacity: 0.23,
-    shadowRadius: 2.62,
-
-    elevation: 4,
-    backgroundColor: '#fff',
-    alignItems: 'center',
-    justifyContent: 'space-between',
-    paddingHorizontal: 8,
-  },
-  modalHeading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-  },
-  modalClose: {
-    width: 30,
-    height: 30,
-    borderRadius: 30,
-  },
-  commentBox: {
-    flexDirection: 'row',
-    margin: 10,
-    alignItems: 'center',
-  },
-  inputCommentText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    color: '#9c9c9c',
-    marginLeft: 10,
-  },
-  textInputContainer: {
-    backgroundColor: '#fff',
-    flexDirection: 'row',
-    alignItems: 'center',
-    padding: 6,
-  },
-  input: {
-    width: '78%',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    color: '#040201',
-    marginHorizontal: 10,
-  },
-  userCommentContainer: {
-    flexDirection: 'row',
-    margin: 10,
-  },
-  commentStyle: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14.5,
-    marginLeft: 10,
-  },
-  inlineOption: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginHorizontal: 8,
-  },
-  inlineOptionContainer: {
-    flexDirection: 'row',
-    alignItems: 'center',
-  },
-  inlineOptionCounter: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 12,
-    color: '#040201',
-  },
-  dot: {
-    fontFamily: 'Roboto-Medium',
-    color: '#040201',
-    textAlign: 'center',
-    textAlignVertical: 'top',
-  },
-  descModalView: {
-    backgroundColor: '#fff',
-    height: '65%',
-    borderTopLeftRadius: 15,
-    borderTopRightRadius: 15,
-  },
-  modalLine: {
-    borderBottomWidth: 4,
-    borderBottomColor: '#040201',
-    width: '10%',
-    alignSelf: 'center',
-    borderRadius: 10,
-    marginVertical: 10,
-  },
-  descModalHead: {
-    width: '100%',
-    shadowColor: '#000',
-    shadowOffset: {
-      width: 0,
-      height: 2,
-    },
-    shadowOpacity: 0.23,
-    shadowRadius: 2.62,
-
-    elevation: 4,
-    backgroundColor: '#fff',
-    justifyContent: 'center',
-    paddingHorizontal: 8,
-    paddingBottom: 10,
-    borderTopLeftRadius: 12,
-    borderTopRightRadius: 12,
-  },
-  descHeader: {
-    justifyContent: 'space-between',
-    flexDirection: 'row',
-  },
-  videoTitle: {
-    color: '#040404',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-  },
-  modalCounter: {
-    fontFamily: 'Roboto-Black',
-    color: '#030303',
-    fontSize: 22,
-  },
-  modalOptionDesc: {
-    color: '#696969',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-  },
-  descContent: {
-    color: '#151515',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    marginVertical: 10,
-  },
-  thumbnail: {
-    width: '35%',
-    height: heightPercentageToDP('10%'),
-    borderRadius: 8,
-  },
-  detailContainer: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    marginVertical: 8,
-    marginHorizontal: 10,
-    alignItems: 'center',
-    width: '48%',
-  },
-  listVideoTitle: {
-    color: '#282828',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    letterSpacing: 0.1,
-    width: '100%',
-  },
-  titleContainer: {
-    flexDirection: 'column',
-    width: '80%',
-  },
-  videoDescription: {
-    color: '#9c9c9c',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 12,
-  },
-  autoPlayContainer: {
-    flexDirection: 'row',
-    marginHorizontal: 10,
-    marginVertical: 8,
-    width: '100%',
-    alignItems: 'flex-start',
-  },
-  downloadHeading: {
-    fontFamily: 'Roboto-Black',
-    fontSize: 22,
-    color: '#212121',
-    textAlign: 'center',
-  },
-  qualityContainer: {
-    marginHorizontal: 10,
-    marginVertical: 8,
-  },
-  qualityText: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 18,
-    color: '#181818',
-    marginVertical: 4,
-  },
-});
-
-export default Player;
diff --git a/src/Screens/PrivacyPolicy.js b/src/Screens/PrivacyPolicy.js
deleted file mode 100644
index 070590e..0000000
--- a/src/Screens/PrivacyPolicy.js
+++ /dev/null
@@ -1,147 +0,0 @@
-import dayjs from 'dayjs';
-import React from 'react';
-import {View, ScrollView, Text, StyleSheet} from 'react-native';
-
-const PrivacyPolicy = props => {
-  return (
-    <ScrollView
-      style={styles.container}
-      contentContainerStyle={styles.contentContainer}>
-      <Text style={styles.heading}>Privacy policy</Text>
-      <Text style={styles.title}>Who we are?</Text>
-      <View style={styles.paraContainer}>
-        <Text style={styles.para}>
-          Provide name and contact details of the data controller. This will
-          typically be your business or you, if you are a sole trader. Where
-          applicable, you should include the identity and contact details of the
-          controller’s representative and/or the data protection officer.
-        </Text>
-      </View>
-      <Text style={styles.title}>What information do we collect?</Text>
-      <View style={styles.paraContainer}>
-        <Text style={styles.para}>
-          Specify the types of personal information you collect, eg names,
-          addresses, user names, etc. You should include specific details on:
-          how you collect data (eg when a user registers, purchases or uses your
-          services, completes a contact form, signs up to a newsletter, etc)
-          what specific data you collect through each of the data collection
-          method if you collect data from third parties, you must specify
-          categories of data and source if you process sensitive personal data
-          or financial information, and how you handle this {'\n\n'}You may want
-          to provide the user with relevant definitions in relation to personal
-          data and sensitive personal data.
-        </Text>
-      </View>
-      <Text style={styles.title}>How do we use personal information?</Text>
-      <View style={styles.paraContainer}>
-        <Text style={styles.para}>
-          Describe in detail all the service- and business-related purposes for
-          which you will process data. For example, this may include things
-          like: personalisation of content, business information or user
-          experience account set up and administration delivering marketing and
-          events communication carrying out polls and surveys internal research
-          and development purposes providing goods and services legal
-          obligations (eg prevention of fraud) meeting internal audit
-          requirements
-          {'\n\n'}Please note this list is not exhaustive. You will need to
-          record all purposes for which you process personal data.
-        </Text>
-      </View>
-      <Text style={styles.title}>
-        What legal basis do we have for processing your personal data?
-      </Text>
-      <View style={styles.paraContainer}>
-        <Text style={styles.para}>
-          Describe the relevant processing conditions contained within the GDPR.
-          There are six possible legal grounds: consent contract legitimate
-          interests vital interests public task legal obligation
-        </Text>
-      </View>
-      <Text style={styles.title}>When do we share personal data?</Text>
-      <View style={styles.paraContainer}>
-        <Text style={styles.para}>
-          Explain that you will treat personal data confidentially and describe
-          the circumstances when you might disclose or share it. Eg, when
-          necessary to provide your services or conduct your business
-          operations, as outlined in your purposes for processing. You should
-          provide information on: how you will share the data what safeguards
-          you will have in place what parties you may share the data with and
-          why
-        </Text>
-      </View>
-      <Text style={styles.title}>
-        How long do we keep your personal data for?
-      </Text>
-      <View style={styles.paraContainer}>
-        <Text style={styles.para}>
-          Provide specific information on the length of time you will keep the
-          information for in relation to each processing purpose. The GDPR
-          requires you to retain data for no longer than reasonably necessary.
-          Include details of your data or records retention schedules, or link
-          to additional resources where these are published.
-        </Text>
-      </View>
-      <Text style={styles.title}>Your rights in relation to personal data</Text>
-      <View style={styles.paraContainer}>
-        <Text style={styles.para}>
-          Under the GDPR, you must respect the right of data subjects to access
-          and control their personal data. In your privacy notice, you must
-          outline their rights in respect of: access to personal information
-          correction and deletion withdrawal of consent (if processing data on
-          condition of consent) data portability restriction of processing and
-          objection lodging a complaint with the Information Commissioner’s
-          Office You should explain how individuals can exercise their rights,
-          and how you plan to respond to subject data requests. State if any
-          relevant exemptions may apply and set out any identity verifications
-          procedures you may rely on. Include details of the circumstances where
-          data subject rights may be limited, eg if fulfilling the data subject
-          request may expose personal data about another person, or if you’re
-          asked to delete data which you are required to keep by law.
-        </Text>
-      </View>
-      <Text style={styles.lastUpdate}>
-        Last Updated: {dayjs(new Date()).format('YYYY MMMM DD')}
-      </Text>
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  contentContainer: {
-    marginHorizontal: 14,
-  },
-  heading: {
-    color: '#1a1816',
-    fontFamily: 'Roboto-Black',
-    fontSize: 40,
-  },
-  title: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 22,
-    marginVertical: 8,
-  },
-  paraContainer: {
-    backgroundColor: '#f8f6f5',
-    padding: 10,
-    borderRadius: 8,
-  },
-  para: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14.5,
-    color: '#212121',
-    textAlign: 'justify',
-  },
-  lastUpdate: {
-    color: '#979797',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    marginVertical: 10,
-  },
-});
-
-export default PrivacyPolicy;
diff --git a/src/Screens/Purchases.js b/src/Screens/Purchases.js
deleted file mode 100644
index 18afb61..0000000
--- a/src/Screens/Purchases.js
+++ /dev/null
@@ -1,446 +0,0 @@
-import React, {useCallback, useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  Image,
-  Pressable,
-  TextInput,
-  VirtualizedList,
-} from 'react-native';
-import {CreditCard, BottomModal, AmountText, Button} from '../Modules';
-import Icon from 'react-native-vector-icons/Ionicons';
-import creditcardutils from 'creditcardutils';
-import Transactions from '../Utils/Purchases.json';
-
-const Purchases = props => {
-  const [cardModal, setCardModal] = useState(false);
-  const [cardNumber, setCardNumber] = useState('');
-  const [isValid, setIsValid] = useState(true);
-  const [cardType, setCardType] = useState(null);
-  const [cardExpiry, setCardExpiry] = useState('');
-  const [cvvNumber, setCvvNumber] = useState('');
-  const [cvvFocus, setCVVFocus] = useState(null);
-
-  const modalDismiss = () => {
-    setCardModal(false);
-  };
-
-  const onChangeHandler = val => {
-    setCardNumber(val);
-    setIsValid(creditcardutils.validateCardNumber(val));
-    setCardType(creditcardutils.parseCardType(String(val)));
-  };
-
-  const cardIcon = useCallback(() => {
-    let icon = null;
-    switch (cardType) {
-      case 'amex':
-        icon =
-          'data:image/png;base64,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';
-        break;
-      case 'dinersclub':
-        icon =
-          'data:image/png;base64,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';
-        break;
-      case 'discover':
-        icon =
-          'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAABQCAYAAAA0snrNAAAABmJLR0QA/wD/AP+gvaeTAAAHUklEQVR4nO2aeWwWRRTAf/OB2JZWCrQSLUU8UAigRkUNasAEvI9IgvG+OBSFCFU0KonEGECUchgvBE80nMYDo6YGAeMJIsYoIqIiHthiBVsq0PZb/3i7frPb/Xb3w4+oyfslXzozO292dt+bmffeFhRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFUXLG/NsTsOgEHAGkgR+A33OQrQAOB7oAtcBmoC5OqHFCt/4O6T4pTBcnRUPa4buSg2o/NpNpyX36/x+SKr0C+DykfQewDVgDvAG8BTgh/RYCZ7nl+cBE69qxwHRgCNDObUsD64CHgQVuPUghMBoYCfQLXEsDq4D7gRX2hdqby4uLChlL2tyCoXvYMxnM87RvndZx+vaf3bYB7rN5jAEWhch6dAS+BErc+hPAXcAy4MwIOYDngVuBE4C3Q643AFuAd4AngR9jxmtDUqVXIqsvjg3ALe6EbJYD57vlR90+AIMQYymMGHM+olibAcBioGfMfGYBE7xK4/jy452UWWZkR4mjwXGckSUz6xa79TXASW75feC0CNkbgcfdchroDWxCDOesbEIu84BRwMnARzF9G4ErgVdj+vlon0tniw8RgykBjrbG6YNYZxUwO2aMdsDTZBTegFjuV4hSxiEvbGZAbjBiKAVW2yZkRe8ADgbOBg61hXbdVnYijlkJFMc/HgAlxpiFjVXlRcXVdc8gBrTAvTYQWYnrQuQMMNaqv+rOL8hWYGNI+4Ys83kOaEXet2dwxcCLyHvfmvVJAuyr0keT2e6LgMuAqcgLTyGK+hHZzrJxInIOe1wOvG7VFwDdgS+stgrgZTIK34GsqiX4j5UOyAovA6i/s3Mnpzn1GskV7mHAzN1VVf5Zx+q6xcAD7hxAFHtDiMyZ+I+b6ixjvwSMz2EutwHb3fLFrnwKOUqucOeWiFQON81GE/AUsh151maQlV4UIdc5UP8pUP8C/zkKMA1x+Lz7DkW2+aAfsRd5CfcBdGjucBdwSNRDRHCA41ANNCNHk8dlQNeQ/uOs8sfAu/t43yhewb8j9MpFOB9K99iCrDqPCuCCiP7BLe8l4FLggCz9S4HhVn0GsDZmTg3OcNqBc31Mv2iMGbxzYnkvxCFrclsLgRGBnj2BC616tlWeDw60yrGRik0+lQ5y1n5r1aOclm8Rr97jcMQj3gpMoa2TNgj/gz6dZEJNPcqOR46df0SqxQwFfkO8a48xZCIOgJut+haij7dhQE3I75yYqRj3vkdZbR/EyPjIt9LB79xUxvS9HpiDOCge3ZDwZjPwEBlF22M1Ad8lmYxJp3ok6Rc7jjHeOLPJHCc9yUQlRfhX/hyIjPcrkTA1+KvI0n8GYkQb8B8zq4DXkjyDx/5Quk1YfG2zG4lJj0QcwV+taynEeVmOWLd9bidOKjmp0LxB7jh/j7MBv6/heepXIskhgD+Q0CufXIPsDse49T+BucB5hOdGsrI/lH6CVU60GpGt8G7E+ofjP++HAKfjD0kKEUOJpzWdJL8Qi4Nj398OI4cgcbjtwD2JKD6K2YjxBn/zs/Svscq7geMQH6opvHt28q30c/EnPnLadhAPeSniC9jW2xdYCeyx2sLCpTYUlW5fD/yS4zza0Nret7pryISSBomh+7v1FmRrzzfXAZ+45QLgGSQ0zZl8Kr0CeMyqb8RvnWGcjT9W99iKWLNHIbJybMevCjglZvxSM5k0jnk2pl80DitKH6zd7GuRZI3HAKu8lGTZy1zZi8Tju9z6wMAcEpMPpRcB1yJpysPctlbEqYlyZK5CdoJXaKv4m/CnZr1E0D1kPsQUINm/UbQN8wqAe4FJAHtamqfSNg+QlL0YqkLaXyCTLLHZn2Ha1/gTOmNIuOPZ7GtGbi5i7aVIYsAepwW4GngvQr4AmIwoqz+Seq1Bzva+SHjm8RWytYMo7hLgTXeMYncuU5B8+DYkYTLY/TsLoOvD9X/sGl92EanUKie3rJyDYWTxjNrPQq79ieTXJ1ltqxHjT8Iw5FmDvEG04cxDjtFhbv0RZFEkve8+K/3ULO0bkRTt6hj53YjXWQP0QM6m80P67US8YnvHWIVsbYvIZKLKgIuibthx1vZ1jePLzzAps9RJ5gQ2ODgjSmbULYno8yhwB5mzNZdVXkl4SPt9Alnvg0x3xPiXIR+DapPcOOn2nka21eDvB8S5mIe89L6EK7zRkvG8za+Rz6pzgPpA/2Ykn57to8anSH57NLLCWwPXdyM5el9ypHhW3fqixvbH4nAH2c/dehxnNu2co0uqIxUO4iB6fsYm4h1X+z1k+3nvpyXQbju29UgIV+9eK0ayhYn0+V/5J4oOyOrrhjgqX5JxWJJQgqyaToi1/4TfEQyl4fZu/XDSvVOO6eoYGlPGfFO45de1ZkkbI4qiEtn5NgHrc5BTFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEX5P/EXyiu9gJDOr0EAAAAASUVORK5CYII=';
-        break;
-      case 'jcb':
-        icon =
-          'data:image/png;base64,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';
-        break;
-      case 'maestro':
-        icon =
-          'data:image/png;base64,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';
-        break;
-      case 'mastercard':
-        icon =
-          'data:image/png;base64,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';
-        break;
-      case 'unionpay':
-        icon =
-          'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAABQCAYAAAA0snrNAAAABmJLR0QA/wD/AP+gvaeTAAAUM0lEQVR4nO2de3wU1b3Av2dmH9m8SQJ5QUgIEEJ4BBDlLVUEFbza6pVib9V626q1am19VFurXu1VqVLf11q19VG9ovahFY1ewEAsrwgJJIYECATyBPLObrK72Zn7xySzuyQxNDu70M9nv3/Nzpz9nTP7m3N+5/x+vzkLYcKECRMmTJgwYcKECRMmTJgwYcKECRMmiIgzWfl2JsZGmC3XCVVZBiLdCJkNZqt5fUJqYoktNqbDZDL1n1fA3SXJbS0mS7MKaiB1qLIQcoolQSSa4oiQLaAKJNErLKJeyMIe+F341AXtKnzqcjue54UXuoyQecaUXirnfhvB80CCEfJU4PXEdP5nTAZOIRkhclCkeBNSbiQiInh1DMEBSfJ8o/u3v60LVFDIWw6w15R7D4K3MVDhD6ZN4qnkzKAqXIyxIOdHnwmFA0xSFNMLRggKeU8vladchhB/M7Lu1xLTeSo50yhxgyKiZUxzYs5QN9HxWExqSueTT54MREhIb6GcPAuIpzFQ4SdNZn43OsMocUMiT7SdaYUDyD2KnBmokJDehktWLkKQZaTMj+PG0C0F9zZEhIQYZRq+YAiQPGp7wDKMaMjpIqOuMFrmP6LjjRY5AJF4digc6HImRB0OVEhIla4KsdBIeYoQlEVEGylyUKS4s0TpKtt58MHeQMWETOmlzIgCZhgps8oaSZccAoXEnx1KFxJfGCEnZEoXJvd8wNBfr8QWa6S4QRFWgbCe+RkcgKqq/1pKV1ENHdoBSiJjjBY5kDhz8Os4PTxOxbXDCEEhVLqx9hygNDLOaJEDkOLloNdxmuzl2Wc7jBAUEqWvB1nAuUbKPG620mi2GClyUETs2WHPwRh7DiFS+iRz3nTA0G65JzL49hxZIKLPjp6uqsYpPSSPsYyy0DesZU4bg+ruRe3VVh+etk5QvSWkKBvCotlS1elCcfQMkBkKey5iZd13GGE2kRobh8PtwtXrv2qyO124PJ6gtkU2Kf9aSlfBz55nF72NeWwKoCm8InUhqs+PllXwKpHnaqu7pl8+xfG1vx8gc08oZu4+6/NV0/J449rvDFpOVVUqj59g3abPeWNncTCaUtu9bt0xo4SFaiK3qP/APC5FVziAfcsuP4ULqwXbzCn6567N2wcIc0gyB62RwWqrjq9T5pyMcfqx+5ReLYRgSvIYXlpzNUsnTTS8HQKx1Uh5QVd6CZPTUdF/sah5+X7X7YU7/T7bZk5BWLUJmtJpp3vPVwNk7rXF4BHBDxCKWK89P3e8N6jzXGERsXfey4QHH+GpzYV+31k4wdDQAgCqMM6eQwiULmR5se9n23kz/a53bfZfevYP6wBdW3ah9g60lSGx59EymLQHyyzL5I/1JvbsrDmK2+Ohob2DZwr9O2GX02l4WxQDZ+4QAqWfuj6P9OnpvSda6Ck/4FfeNne6fuwo3DWozJIhZu6jR8WQGG+ML174uF6np6ViM3udNNuOHNGPc8aM8fve9iM1htTvQ6e77sg+IwUGfSInhNcTJyKsfvbaXrjLb9YOp/T0vqHfnJ6MNTebiCkTOPnq+6SvWMj1ifFs+bKK6toTWMwm3nz0+3xr2Ww8isLyH66jsLgKAEkSzJqSwdiUBNo7u9l3oJbmtq6+tgnGpyaQm53GuOQE3tqwnWXzphIbbWNz8xEacQCwwGfIrj7ZTFNHp9YuWeYXK5bp1/bVN7Cz5iiSEGQlJnK8s5POvp5vNZmIj7TR1NFJbEQEU1NTmJaawvrdJXT09Pid+7CsXK8DxHbefdfQpUFQlV5OXnQvit51bbOm6vYawP65/9BuShqFZYJm/j2tHXSX7ifuqhVkvLUOAMXRw6if38j6MVqWVUu7nYzld5OSGMuq87WH5atDDew/3AjAhfNy+d2vriUzLVGvo8fp5nv3/4F3Py3m5tVLeebnawBo7XDw37d/k/gYbYJ48PhJpj+6FoAFWZn695vtdtacM5tx8fFcNWsm09NSAXB5PNz67p9ZljOZdd+6nImjk2ixO/iwrJxF2VlkJiTw0McF/Ob/NlP1wH3ERUQAUHSomlGRNvbddzdmWWbHkRpe2eb9XYzyt/sSVKUrJsUvyHLqJK7rlOE78twZ0DdBs2/ZBYqCdVKmfl2KjEB4FP1zQlwUCbFR2Ltd3LH2HfImphMbZaWpuYMF+dl8+OytWMwmqmtPUPBFOTevXkqE1cxvfvbvvPtpMZPHJ+uy4mNsdDm89jgrKQHR15ZF2d6ePnd8BnPH+2fq1LW1c9M775IxKp4/fvcaJCFoaO/A7fGwenY+EX2moeiQFgo/fLJZnyPEWK3ctGgBZllGVVXu+ssHqL4+C9lYew7BVjpioW+2sc1n6FZ7nLgO+tu/qAvm6cf9Ezxr3iT9XP1tj/BAWSO/3/QcAG2dDhpOtnPrNRew7q7VAGzaUQHAf/34Cixm7fZufuRNisuOcPPqpQCkJGnOwWkT03TZ3777JU62drLx5TsB2N90HFVVyUkew+ho7zyhsuk4dpeLFruDY22tbD10mL+Waib34AO/QBICZ28vC9Y9w9TUZD666QcA9Lh72X2sFoBDPkqfnDyG687TPNRvFe9m11G/5binxywZEmTxJcg23T+yZs3J1I+dh2v91ucIQcyl5/d9TaVzg7YUijxnml7EXriTznP0JT97Ko6iqipTsrzr/qI9B0lOjGXxbO1haW7ronBXJTmZ3jJHG5o1W587vq86lS3FVaxY6K2rX0G+S7BWRzdz1q7Do3hHm34unzGNhCjNNGysPEBjRweXTZ+qX2/o6MDZ58k70tyin79v+TIizCa6nE7u/+jjU8WWsnZt56knAyVos/fBgizmDG/PMqeMRoqy6Z8Tb/w21omaEroKd+I6UoucEIclayygee6OVNeTkTdB/86OfdUAuvIAtpVWM3daFnJf3tzuihp6PQqLZntHjC3FVUzKSCYuWqu/uvYkJ1o7mTHZuyzr73ELszK9sg8fGVThgJ9TZsvBQwBcPDVXP1fw1X79uKa1VT+ekKTNN57c+DkN7acE0YTx9hyC2NMnm6fOUFXVb23laW5FjtWGSnlULBM2v0HX5zuImDqRmOVaD1adLhrufBzomwP02dXuL8vYExFNfo7XM1ZSWUtkhIUZk7QHQ1FUdpUd5qL53h7mcnuIjrTy4zUXaPJVlVf+UsS8md6HZ1eZZmtnTfHa6pJa7Z2CRdk+5WqODnm/SVFR+nFTZydmWWaJz3f31HnfUahtbfP7bl1bO09/vmWATFWVgqL0oPV0CWVA/PzE4y/7LdFs+bmM/sn1usJ7m5o5vPKH9Oyt1K4vmKWX7d7zFSWRMczPz9bPlew/ytK5U7BatGe38kgjbZ0OvthzEHefU2flkhk0bl5H7gRtlv3YKx+zrfQQC/O9PXPP/mPIksQ5eZkAeBSFsvoGxo2KJyNhlF6u+NjQ7u/yhkb9+OFVl7Dnnp/5re37HyKAunb/hNYHPy6g2+0eIFOWPf8YssIACFpPHyxpouXV9+jeXU78dy4jYtpk5FGx9DY1465vwrGthPb3C1Ds3Xp5OS5Gm9ApCl0bt1GdnEpLu53Gk+20dtg5dOwEl39jFlt3H8Dl6qVoj+boqT/RxhW3P89d1y9nSlYqHkWltPIoL67fwoatewGIsJjZuF2b9BUWVzI+LZGqmiacwsOhzha63W4mjR6t23aA3UdrGYoXtn7BtLRU/m16HqmxsXy2v4rs0Um4PR5a7A4qGpv0sr7DeGldPW/t+nIwkUeNDLL4EjQHdqk596ivzz1Q7LLMksnnoQTZ526aGY1IGHlfsJnNCAEO18Ce289tS5fw+OWrAFj14stsrKwaUEbAWz1PPzF4WC9AgtLTy8nL6FUVwxQOsM8WE3SFA4i4wJImBhumfRkdHc29yy8EoKBi/6AKB1AJziQOgmTTe2WP4flwIYmfR8vamiOIPLzqEuJtNjyKwi8/HLBE01GU4Ck9KD1dRSw0+qcLND3qru9dzJxcbXb+2CsfU1KpmUtZkvjDw9/DYpb5pHw/XzobWZ47hfz0NCze19t5b08pf92rOWEum57H6tnaJPPpz7eQl5pCelwciVGRxFitJEVH43C5UIFP91fy+g7N83j+pGymp6Wy+1gtG8orKGtoGKq5He7GY2UB3fDXEBSlC4GhPd0jBOW2kUfPpk1M55Fbr0CWJFRVRZYlPB6Fo40t/G1TCdesPA+ArInJ5Gem62t8X57fUqQf/+f881iRqwWOVuTmEG21+pXdWXOUi6dq10dHR1FW38DY+Hgeu3wlWYmJ1LW1D4jD+yEwPMjii+FK309OjBOmD1/y9Km0RuGQRmZrH7/jSq5eMVdXpBCCb144G4Dn3t7EyiVe1/Dvv9hG11aX/vmeiy5keloqzXY7O/vW6FEWC+dP1JZ72w4f4ZFPPiM9Po6X1lytySzcysaqA/zlBzcAsGRiNosnZvPrVZcgSxIeReGOP/8Vu8tbz6kEI8jii+FK7zGJ+QIMTSEtHWHSxLiUBH567XJUFT7YXMKvnv8bjh7vj32ytYutr98DQNnBOqo7Wrhy5gyS+nzt2UlJgOZN6/fEXZgzmYg+n/763SVsqjrAjYsW6DJf31nMvvoGrn71NT3WvrnqALe/70RRVHbW1Pit6QdD+ldTuoS0UA1sS5cBjHQS5/EovP/Zlxxv6aTL4eSaS8/zu/7eZ8XkZWuu4XGpCXx6y02DytnwVYV+fPHUHP14UfYEfnrBUsaN0t6cPdbaxuxxY9l51x1+33941SV+ny967kWKDlUP1ezent4ew4Msvhiu9GC8vrR3hD39/Lk5XLX8nEGvHWtsobHZ6xn70UvvsMfudaA8cOlyVs+eRZfTSUGF5iEUQnBJnz+9rbubrMQEPUkCYEP5V2QmJugOnQlJicTbbPQqCnvr6gHocbvZfvjIkG0WUGrUhkJDYajS12vDuqFvstSbI2gyW4cvOAjFZYe54vbn+fNvf4QkCTbtqODxP3wCaEP72juu0sv+6Y7rB5XxYtE/9Ly3OePGkhKrjTrPbynikU8+Y/XsWfzxu1oixoavKvi0opKHNhQAUHn/vcTbbBQdquaSF146rTarBufDDYahSs8x585ExdCsxZEmQZpNMhlpieRkpiBJ2gKyotq7RGrvdLB4jhZ523ewjp3H/T2eJlmivKGJPxV7XaT9M3KALQeruTJ/Bjcumg+A3eXCJEl8dLMWPzdLsu63n5CYqJ9/cEPB1wZujHyTZSgMVbq2PjfWng+VBDkcC2dNouBFf9t6y5oLuGXNBXgUhdsefVtPsnj8fwtwpcmsv+E6APIfe4J7ll3A2isuo7W7mzf7XmC4NM8bvXvnhmuJt3lDwxsrq5iXmUlWYgICQWailtLlcLnxqApZiQl4FJXKpuNf225ZlYISZPHFUKWLINjzkc7cIyMsvPz+Vm745iIkSVBde4L3PtV67YnWTubN0MKevR6Fz/ZXsmysd5VZ8nMte6bF4eCz/Zo9T4uLIz9dm/QVHaqmoKKSKclj+M7cOQBsKK/gtR27+NVHH3Pr+YtZe8VlAGw+cIBnC7dSeODQ8I0W1HQ/u3boqI5BGD2RWzB8kdPHLssctIzsTZYNW/fS1NzO96/U0u5f/2Abj7z0d0DzwtVtegKAot1VtMtuzLJ3lXnL+vdp6uhkR00NJ7u0DSBXTpuq58w9U7iVD/eV8+vLLgVAUVU+qdCSJKamJPPQyot1WSvzptLtcp+W0lVFFA1byAAMU/pucscbGVUDKA0wyHLpYq/j5aMte/XjeTMmkNSXH795VyUiVsYke71w7+4u8ZuVjxsVz5o53th+fno6OWPGcGW+9uJGq8NBRnw8nT09vHbtNdjMZoqPHqPH7WZR9gTyUlN0x8zXYdT2IsNhmNJNsrpQNThSO1J73s8li705by8/dB29HoVn/rSRSeO9Lyjc/h/L+KGylI1V3pcuSu69E4+iMvPR39DtdnPLkkXMz8rUr9/nk+sOkBgVxd0XXci01BQy+5Zx17/xNrctXcyi7AnkpiSz486fcM7adV/b3mB74voxTOnB2Gki0MhaXVMrTNMSG2f2pVlt3V1FRmoCiqIiSYKE2ChUVeWDvWXMGTeW1LhYbGYLnx84qIdJS2rruf/v/hGxFbk5eirVy9u28/35WiZvXVs7173xFodOnuTNncWsyJ3C+IRR/L2sfLjmdrjqa4YtZASGdc0S05QSgZg5fMnTwyMES3LOG7HPvZ8omxWLWZOhqlradD9x0TYsU6MgyUxbd/dQIobFIstEWS14FJWOnoHv0p8mBc6nn7h4+GKBY0hP387EWIGYNnzJ02d/AEEWX+zdTuxD6LO9qxuTbEZ0B7Y1m8vjweUY+UMDoVmf92NIEkWEyTQfw4MsodguTDpTOzoPQArRJA4MUroUBHse6CTutDhLNgUEentcjp3DFzMGQ5QejCBLaQBJE6fL2bL9p4CSYAdZfAlY6ZtZagJhaJClzhzB8REGWf4ZAk2CNApViJAN7WCA0hOsDdmAod2yKiL4+8kAiMizw56jKkNnSAaBwO9akQ3fe7sjFJv8mgRIZ/R/i/o54BwVszGUFQaudLfpMPD1/sV/knS38fu2DKBXRXUbGxEcAQqotxqxnfc/Q8BKn8ne48AGA9qik+/oIMM9YifHaaM2Dp2cGAJU4A7n008WhLpiY2bvvZ6bVJWDRsgCMKkqv66tJCbIuzB6DnejtIe0k/VzXBXqVc6nn3jmTFRumFErJy/aY1JuUVGXgzBkH9h6S4T5j4lpY8psMdFOSQuDCVTVJYTTLpna22Rza8B/rCeEkMdZk0SSKQ6T0F4zlUSPsIpGIYnA3GynVKUialGVAqdFvMETTxj6p31hwoQJEyZMmDBhwoQJEyZMmDBhwoQJE+as4f8BMOoMkSgimWMAAAAASUVORK5CYII=';
-        break;
-      case 'visa':
-        icon =
-          'data:image/png;base64,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';
-        break;
-      case 'visaelectron':
-        icon =
-          'data:image/png;base64,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';
-        break;
-    }
-    return icon;
-  }, [cardType]);
-
-  const blur = () => {
-    if (!cardNumber) {
-      setIsValid(true);
-    }
-  };
-
-  const HeaderComp = () => {
-    return (
-      <View>
-        <Text style={styles.header}>Your balance</Text>
-        <View style={styles.row}>
-          <Icon name="wallet-outline" color="#212121" size={36} />
-          <AmountText style={styles.balance} text={1268} />
-        </View>
-        <CreditCard
-          name="Anwer Solangi"
-          number={5555555555554444}
-          expiration={'04/21'}
-        />
-        <Text style={styles.label}>Active Card</Text>
-        <View style={styles.row}>
-          <View style={styles.inactiveCard}>
-            <Image
-              source={{
-                uri: 'data:image/png;base64,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',
-              }}
-              style={styles.cardType}
-              resizeMode="contain"
-            />
-          </View>
-          <View style={styles.activeCard}>
-            <View style={styles.activeIcon}>
-              <Icon name="checkmark-outline" color="#fff" size={16} />
-            </View>
-            <Image
-              source={{
-                uri: 'data:image/png;base64,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',
-              }}
-              style={styles.cardType}
-              resizeMode="contain"
-            />
-          </View>
-          <Pressable style={styles.addCard} onPress={() => setCardModal(true)}>
-            <Icon name="add" size={35} color="#d6d6d6" />
-          </Pressable>
-        </View>
-        <Text style={styles.label}>Transaction History</Text>
-      </View>
-    );
-  };
-
-  const isSubmitted = useCallback(() => {
-    if (!isValid || !cvvNumber || !cardExpiry || !cardNumber) {
-      return false;
-    }
-    return true;
-  }, [cvvNumber, isValid, cardExpiry, cardNumber]);
-
-  const EmptyContainer = () => {
-    return (
-      <View style={styles.emptyComp}>
-        <Text style={styles.emptyText}>
-          You haven't made any transaction yet
-        </Text>
-      </View>
-    );
-  };
-
-  return (
-    <View style={styles.container}>
-      <VirtualizedList
-        contentContainerStyle={styles.contentContainer}
-        data={Transactions}
-        getItemCount={() => Transactions.length}
-        ListHeaderComponent={HeaderComp}
-        getItem={(item, index) => item[index]}
-        renderItem={({item}) => {
-          return (
-            <View style={styles.purchaseComp}>
-              <Text style={styles.itemDetail}>{item?.item}</Text>
-              <View style={styles.transactionRow}>
-                <AmountText text={item?.amount} />
-                <Text style={styles.dot}>{'\u2B24'}</Text>
-                <Text style={styles.date}>Wed, 29 May 2018</Text>
-              </View>
-            </View>
-          );
-        }}
-        ListEmptyComponent={EmptyContainer}
-      />
-      <BottomModal dismiss={modalDismiss} isVisible={cardModal}>
-        <View style={styles.modalContent}>
-          <View style={styles.inputContainer}>
-            <TextInput
-              placeholder="Card number"
-              placeholderTextColor="#737373"
-              value={creditcardutils.formatCardNumber(cardNumber)}
-              style={styles.input}
-              keyboardType="numeric"
-              maxLength={19}
-              onBlur={blur}
-              onChangeText={onChangeHandler}
-            />
-            <Image
-              source={{uri: cardIcon()}}
-              style={styles.inlineCard}
-              resizeMode="contain"
-            />
-          </View>
-          {!isValid && (
-            <Text style={styles.error}>Enter valid card number</Text>
-          )}
-          <View style={styles.modalRow}>
-            <TextInput
-              placeholder="MM/YY"
-              placeholderTextColor="#737373"
-              value={creditcardutils.formatCardExpiry(cardExpiry)}
-              style={styles.rowInput}
-              keyboardType="numeric"
-              maxLength={12}
-              onChangeText={val => setCardExpiry(val)}
-            />
-            <TextInput
-              placeholder="CVV"
-              placeholderTextColor="#737373"
-              value={cvvNumber}
-              style={styles.rowInput}
-              keyboardType="numeric"
-              maxLength={3}
-              onFocus={() => setCVVFocus(true)}
-              onBlur={() => setCVVFocus(false)}
-              onChangeText={val => setCvvNumber(val)}
-            />
-          </View>
-          {cvvFocus && (
-            <Text style={styles.info}>
-              enter three-digits number at back of your code
-            </Text>
-          )}
-          <View style={styles.horizontalLine} />
-          <Button
-            title="Done"
-            // eslint-disable-next-line react-native/no-inline-styles
-            styleProps={{
-              ...styles.button,
-              backgroundColor: isSubmitted() ? '#04abf2' : '#cacaca',
-            }}
-            textStyle={styles.buttonText}
-          />
-          <View style={styles.descRow}>
-            <Icon name="shield-half-outline" color="#192948" size={24} />
-            <Text style={styles.descText}>
-              We'll keep your payment details safe
-            </Text>
-          </View>
-        </View>
-      </BottomModal>
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  contentContainer: {
-    marginHorizontal: 10,
-  },
-  header: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 20,
-    color: '#212121',
-    marginTop: 8,
-    marginHorizontal: 15,
-  },
-  row: {
-    flexDirection: 'row',
-    margin: 15,
-  },
-  balance: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 28,
-    color: '#212121',
-    marginHorizontal: 15,
-  },
-  cardType: {
-    width: 60,
-    height: 60,
-  },
-  label: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    marginHorizontal: 15,
-    marginVertical: 10,
-    color: '#181818',
-  },
-  inactiveCard: {
-    borderRadius: 8,
-    height: 70,
-    width: 105,
-    borderWidth: 1,
-    borderColor: '#d6d6d6',
-    alignItems: 'center',
-    justifyContent: 'center',
-    marginHorizontal: 8,
-  },
-  activeCard: {
-    borderRadius: 8,
-    height: 70,
-    width: 105,
-    borderWidth: 1,
-    borderColor: '#70d59f',
-    alignItems: 'center',
-    justifyContent: 'center',
-    marginHorizontal: 8,
-  },
-  activeIcon: {
-    width: 18,
-    height: 18,
-    borderRadius: 9,
-    backgroundColor: '#70d59f',
-    alignItems: 'center',
-    justifyContent: 'center',
-    right: -4,
-    top: -6,
-    position: 'absolute',
-  },
-  addCard: {
-    borderRadius: 8,
-    height: 70,
-    width: 105,
-    borderStyle: 'dashed',
-    borderWidth: 1,
-    borderColor: '#d6d6d6',
-    alignItems: 'center',
-    justifyContent: 'center',
-    marginHorizontal: 8,
-  },
-  input: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    width: '90%',
-  },
-  modalRow: {
-    justifyContent: 'space-between',
-    flexDirection: 'row',
-    marginVertical: 15,
-  },
-  rowInput: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    width: '48%',
-    borderWidth: 1,
-    borderColor: '#d6d6d6',
-    borderRadius: 8,
-    paddingHorizontal: 10,
-  },
-  inputContainer: {
-    borderWidth: 1.5,
-    borderRadius: 8,
-    borderColor: '#dcdcdc',
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    paddingHorizontal: 10,
-    alignItems: 'center',
-  },
-  modalContent: {
-    marginVertical: 10,
-    padding: 10,
-    marginHorizontal: 12,
-  },
-  inlineCard: {
-    width: 32,
-    height: 32,
-  },
-  info: {
-    color: '#04abf2',
-    fontFamily: 'Roboto-Regular',
-    fontSize: 14,
-  },
-  error: {
-    color: '#ED4337',
-    fontFamily: 'Roboto-Regular',
-    fontSize: 14,
-  },
-  horizontalLine: {
-    borderBottomColor: '#ebebeb',
-    borderBottomWidth: 1.5,
-    marginVertical: 10,
-  },
-  button: {
-    width: '100%',
-    height: 50,
-    borderRadius: 8,
-    borderWidth: 0,
-  },
-  buttonText: {
-    color: '#fff',
-  },
-  descText: {
-    color: '#737373',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    marginHorizontal: 10,
-  },
-  descRow: {
-    alignSelf: 'center',
-    alignItems: 'center',
-    flexDirection: 'row',
-  },
-  purchaseComp: {
-    width: '90%',
-    height: 60,
-    borderRadius: 3,
-    elevation: 4,
-    backgroundColor: '#fff',
-    marginVertical: 4,
-    alignSelf: 'center',
-    paddingHorizontal: 15,
-    justifyContent: 'center',
-  },
-  itemDetail: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-  },
-  transactionRow: {
-    flexDirection: 'row',
-    alignItems: 'center',
-  },
-  dot: {
-    color: '#f87687',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 12,
-    marginHorizontal: 10,
-  },
-  date: {
-    color: '#cfcfcf',
-    fontFamily: 'Roboto-Light',
-    fontSize: 15,
-  },
-  emptyText: {
-    color: '#a2a2a2',
-    fontFamily: 'Roboto-Light',
-    fontSize: 19,
-  },
-  emptyComp: {
-    width: '96%',
-    height: 50,
-    backgroundColor: '#fff',
-    elevation: 3,
-    shadowColor: '#000',
-    shadowOffset: {
-      width: 0,
-      height: 1,
-    },
-    shadowOpacity: 0.22,
-    shadowRadius: 2.22,
-    borderRadius: 8,
-    alignSelf: 'center',
-    padding: 10,
-    marginBottom: 15,
-  },
-});
-
-export default Purchases;
diff --git a/src/Screens/Search.js b/src/Screens/Search.js
deleted file mode 100644
index 5032669..0000000
--- a/src/Screens/Search.js
+++ /dev/null
@@ -1,161 +0,0 @@
-import {useFocusEffect} from '@react-navigation/native';
-import React, {useEffect, useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  TouchableOpacity,
-  Pressable,
-  TextInput,
-  VirtualizedList,
-} from 'react-native';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {heightPercentageToDP, widthPercentageToDP} from '../Utils/DpToPixel';
-import RecentWords from '../Utils/RecentWords';
-import {Loader, CoverVideo} from '../Modules';
-import Videos from '../Utils/HomeData.json';
-
-const Search = props => {
-  const [data, setData] = useState(null);
-  const [isLoading, setIsLoading] = useState(true);
-  const [searchText, setSearchText] = useState('');
-  const [searchResult, setSearchResult] = useState(null);
-
-  useEffect(() => {
-    let isMounted = true;
-    const getWords = () => {
-      if (isMounted && data === null) {
-        setData(RecentWords);
-        setIsLoading(false);
-      }
-    };
-    getWords();
-    return () => {
-      isMounted = false;
-    };
-  }, [isLoading, data]);
-
-  const searchResultHandler = () => {
-    if (!searchText) {
-      return;
-    }
-    setIsLoading(true);
-    try {
-      setSearchResult(Videos);
-    } catch (err) {
-      console.log('Error');
-    }
-    setIsLoading(false);
-    return;
-  };
-
-  useFocusEffect(() => {
-    props.navigation.setOptions({
-      headerTitle: () => (
-        <TextInput
-          placeholder="Search"
-          style={styles.searchInput}
-          placeholderTextColor="#696969"
-          value={searchText}
-          onChangeText={val => setSearchText(val)}
-          onSubmitEditing={searchResultHandler}
-        />
-      ),
-      headerRight: headerProps => (
-        <TouchableOpacity style={styles.rightButton}>
-          <Icon name="mic" color="#282828" size={26} />
-        </TouchableOpacity>
-      ),
-    });
-  });
-
-  if (isLoading) {
-    return <Loader />;
-  }
-
-  const WordComp = ({item}) => {
-    return (
-      <Pressable style={styles.words}>
-        <Icon name="repeat-outline" size={24} color="#212121" />
-        <Text style={styles.title}>{item?.word}</Text>
-        <Icon name="resize-outline" size={24} color="#212121" />
-      </Pressable>
-    );
-  };
-
-  const VideoComp = ({index, item}) => {
-    return (
-      <CoverVideo
-        onPress={() =>
-          props.navigation.navigate('Player', {
-            videoIndex: index,
-          })
-        }
-        thumbnail={item?.thumb}
-        channelAction={() =>
-          props.navigation.navigate('ChannelScreen', {
-            channelName: item?.channel,
-          })
-        }
-        channelAvtar={'https://s3.envato.com/files/335035895/thumbnail.png'}
-        title={item?.title}
-        channelName={item?.channel}
-        uploaded={item?.uploaded}
-        views={item?.views}
-      />
-    );
-  };
-
-  return (
-    <View style={styles.container}>
-      <VirtualizedList
-        data={searchResult ? searchResult : data}
-        getItemCount={() => (searchResult ? searchResult.length : data.length)}
-        getItem={(item, index) => item[index]}
-        renderItem={searchResult ? VideoComp : WordComp}
-        keyExtractor={(item, index) => index?.toString()}
-      />
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  searchInput: {
-    width: widthPercentageToDP('72%'),
-    backgroundColor: '#f2f2f2',
-    height: heightPercentageToDP('5.8%'),
-    borderRadius: 5,
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    paddingHorizontal: 7,
-  },
-  rightButton: {
-    marginHorizontal: 5,
-    width: 35,
-    height: 35,
-    backgroundColor: '#f2f2f2',
-    borderRadius: 35 / 2,
-    justifyContent: 'center',
-    alignItems: 'center',
-  },
-  words: {
-    flexDirection: 'row',
-    marginHorizontal: 8,
-    alignItems: 'center',
-    marginVertical: 10,
-  },
-  title: {
-    fontFamily: 'Roboto-Medium',
-    color: '#212121',
-    fontSize: 15,
-    marginHorizontal: 8,
-    width: widthPercentageToDP('80'),
-  },
-});
-
-export default Search;
diff --git a/src/Screens/Settings.js b/src/Screens/Settings.js
deleted file mode 100644
index f8f6367..0000000
--- a/src/Screens/Settings.js
+++ /dev/null
@@ -1,285 +0,0 @@
-import React, {useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  Pressable,
-  ScrollView,
-  Image,
-  TextInput,
-} from 'react-native';
-import {heightPercentageToDP} from '../Utils/DpToPixel';
-import User from '../Utils/User.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {Alert, Button, BottomModal} from '../Modules';
-
-const Option = ({onPress, text, icon}) => {
-  return (
-    <Pressable style={styles.optionContainer} onPress={onPress}>
-      <Icon name={icon} color="#303b4a" size={26} />
-      <Text style={styles.option}>{text}</Text>
-      <Icon name="chevron-forward-outline" color="#212121" size={27} />
-    </Pressable>
-  );
-};
-
-const Settings = props => {
-  const [deleteModal, setDeleteModal] = useState(false);
-  const [monetizationModal, setMonetizationModal] = useState(false);
-  const [infoModal, setInfoModal] = useState(false);
-  const [infoAlert, setInfoAlert] = useState(false);
-
-  return (
-    <ScrollView
-      style={styles.container}
-      contentContainerStyle={styles.contentContainer}>
-      <View style={styles.profileContainer}>
-        <Image source={{uri: User?.avtar}} style={styles.avtar} />
-        <Text style={styles.channelName}>{User?.name}</Text>
-        <Text style={styles.channelMail}>{User?.email}</Text>
-
-        <Button
-          styleProps={styles.editButton}
-          title="Edit Profile"
-          textStyle={styles.buttonText}
-          isLoading={false}
-          onPress={() =>
-            props.navigation.navigate('EditProfile', {channelName: User?.name})
-          }
-        />
-      </View>
-      <Text style={styles.heading}>App</Text>
-      <View style={styles.modeContainer}>
-        <Option
-          text="Downloads"
-          icon="download-outline"
-          onPress={() =>
-            props.navigation.navigate('VideosScreen', {
-              screenName: 'Watch Later',
-              listId: 1,
-            })
-          }
-        />
-      </View>
-      <Text style={styles.heading}>General</Text>
-      <View style={styles.modeContainer}>
-        <Option
-          text="Earnings"
-          icon="wallet-outline"
-          onPress={() => props.navigation.navigate('Earnings')}
-        />
-        <Option
-          text="Monetizations"
-          icon="logo-usd"
-          onPress={() => setMonetizationModal(true)}
-        />
-        <Option
-          text="Purchases"
-          icon="cart-outline"
-          onPress={() => props.navigation.navigate('Purchases')}
-        />
-        <Option
-          text="Verification"
-          icon="checkmark-circle"
-          onPress={() => props.navigation.navigate('Verification')}
-        />
-        <Option
-          text="Blocked Users"
-          icon="close-circle-outline"
-          onPress={() => props.navigation.navigate('BlockedList')}
-        />
-        <Option
-          text="My Information"
-          icon="clipboard-outline"
-          onPress={() => setInfoModal(true)}
-        />
-        <Option
-          text="Delete account"
-          icon="trash-outline"
-          onPress={() => setDeleteModal(true)}
-        />
-      </View>
-      <Text style={styles.heading}>Anwer Solangi © </Text>
-      <Alert
-        isVisible={deleteModal}
-        dismiss={() => setDeleteModal(false)}
-        title="Delete Account"
-        message="Are you sure you want to delete this account"
-        buttons={[
-          {onPress: () => console.log('Test'), title: 'Yes'},
-          {cancellable: true, title: 'No'},
-        ]}
-      />
-      <BottomModal
-        isVisible={monetizationModal}
-        dismiss={() => setMonetizationModal(false)}>
-        <View style={styles.modalContainer}>
-          <Text style={styles.info}>
-            Earn (0.2 USD) for each advertisement click you get from your
-            videos!
-          </Text>
-          <View style={styles.horizontalLine} />
-          <TextInput
-            placeholder="Subscription Price"
-            placeholderTextColor="#737373"
-            style={styles.rowInput}
-          />
-        </View>
-        <Button
-          styleProps={styles.editButton}
-          title="Save"
-          textStyle={styles.buttonText}
-          isLoading={false}
-        />
-      </BottomModal>
-      <BottomModal isVisible={infoModal} dismiss={() => setInfoModal(false)}>
-        <View style={styles.modalContainer}>
-          <Text style={styles.info}>
-            Please choose which information you want to download
-          </Text>
-          <Pressable
-            style={styles.modalOption}
-            onPress={() => setInfoAlert(true)}>
-            <Icon name="information-circle" size={26} color="#04abf2" />
-            <Text style={styles.modalText}>My information </Text>
-          </Pressable>
-          <Pressable style={styles.modalOption}>
-            <Icon name="videocam" size={26} color="#4caf50" />
-            <Text style={styles.modalText}>Videos</Text>
-          </Pressable>
-        </View>
-      </BottomModal>
-      <Alert
-        isVisible={infoAlert}
-        dismiss={() => setInfoAlert(false)}
-        title="Password required"
-        message="Please re-enter your password to download information"
-        buttons={[
-          {onPress: () => console.log('Test'), title: 'Okay'},
-          {cancellable: true, title: 'Cancel'},
-        ]}>
-        <TextInput
-          placeholder="Password"
-          placeholderTextColor="#737373"
-          style={styles.rowInput}
-        />
-      </Alert>
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-  },
-  contentContainer: {
-    backgroundColor: '#f6f6f6',
-    flexGrow: 1,
-  },
-  profileContainer: {
-    width: '100%',
-    height: heightPercentageToDP('35'),
-    padding: 13,
-    backgroundColor: '#fff',
-    alignItems: 'center',
-    justifyContent: 'center',
-  },
-  modeContainer: {
-    width: '100%',
-    padding: 13,
-    backgroundColor: '#fff',
-  },
-  avtar: {
-    width: 100,
-    height: 100,
-    borderRadius: 50,
-  },
-  channelName: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    color: '#212121',
-    marginVertical: 5,
-  },
-  channelMail: {
-    color: '#606060',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-  },
-  editButton: {
-    backgroundColor: '#04abf2',
-    width: '40%',
-    height: 45,
-    borderRadius: 35,
-    alignItems: 'center',
-    justifyContent: 'center',
-    flexDirection: 'row',
-    marginVertical: 8,
-  },
-  buttonText: {
-    color: '#fff',
-    fontFamily: 'Roboto-Medium',
-  },
-  heading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    color: '#9c9c9c',
-    paddingVertical: 10,
-    marginHorizontal: 12,
-  },
-  option: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#212121',
-    width: '80%',
-  },
-  optionContainer: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    marginHorizontal: 8,
-    alignItems: 'center',
-    marginVertical: 8.6,
-  },
-  info: {
-    backgroundColor: '#f8f9fb',
-    fontFamily: 'Roboto-Medium',
-    color: '#111111',
-    fontSize: 15,
-  },
-  rowInput: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    borderWidth: 1,
-    borderColor: '#d6d6d6',
-    borderRadius: 8,
-    paddingHorizontal: 10,
-  },
-  horizontalLine: {
-    borderBottomColor: '#ebebeb',
-    borderBottomWidth: 1.5,
-    marginVertical: 10,
-  },
-  modalOption: {
-    flexDirection: 'row',
-    width: '95%',
-    height: heightPercentageToDP('8'),
-    alignSelf: 'center',
-    borderRadius: 7,
-    alignItems: 'center',
-    marginVertical: 10,
-    backgroundColor: '#efefef',
-    paddingHorizontal: 10,
-  },
-  modalText: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    marginHorizontal: 20,
-  },
-  modalContainer: {
-    marginHorizontal: 11,
-    marginBottom: 4,
-  },
-});
-
-export default Settings;
diff --git a/src/Screens/Signup.js b/src/Screens/Signup.js
deleted file mode 100644
index b8a6d66..0000000
--- a/src/Screens/Signup.js
+++ /dev/null
@@ -1,235 +0,0 @@
-import React, {useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  Image,
-  ScrollView,
-  Pressable,
-} from 'react-native';
-import {launchCamera, launchImageLibrary} from 'react-native-image-picker';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {BottomModal, Button} from '../Modules';
-import {heightPercentageToDP, widthPercentageToDP} from '../Utils/DpToPixel';
-import {Input} from './Login';
-
-const Login = props => {
-  const [isSecure, setIsSecure] = useState(true);
-  const [showModal, setShowModal] = useState(false);
-  const [image, setImage] = useState(null);
-
-  const options = {
-    mediaType: 'photo',
-    maxWidth: 480,
-    maxHeight: 480,
-  };
-
-  const pickerHandler = async response => {
-    if (!response.didCancel) {
-      let uri = response.assets[0]?.uri;
-      setImage(uri);
-      setShowModal(false);
-    }
-  };
-
-  return (
-    <ScrollView style={styles.container}>
-      <Pressable style={styles.profileContainer}>
-        <Image
-          source={
-            image ? {uri: image} : require('../../assets/defaultProfile.jpg')
-          }
-          style={styles.profile}
-        />
-        <Pressable style={styles.addProfile} onPress={() => setShowModal(true)}>
-          <Icon name="camera-outline" size={24} color="#fff" />
-        </Pressable>
-      </Pressable>
-      <View style={styles.contentContainer}>
-        <Text style={styles.heading}>Create account</Text>
-        <View style={styles.socialContainer}>
-          <View style={styles.socialButton}>
-            <Icon size={28} name="logo-google" color="#242526" />
-          </View>
-          <View style={styles.socialButton}>
-            <Icon size={28} name="logo-facebook" color="#1877f2" />
-          </View>
-          <View style={styles.socialButton}>
-            <Icon size={28} name="logo-twitter" color="#1DA1F2" />
-          </View>
-        </View>
-        <Text style={styles.loginWith}>Or create with email...</Text>
-        <Input placeholder="Email ID" icon="at-outline" />
-        <Input placeholder="Full Name" icon="person-outline" />
-        <Input placeholder="Username" icon="person-outline" />
-        <Input
-          placeholder="Password"
-          icon="lock-closed-outline"
-          isPass
-          securePass={isSecure}
-          secureChange={() => setIsSecure(!isSecure)}
-        />
-        <Button
-          title="Create Account"
-          styleProps={styles.button}
-          textStyle={styles.buttonText}
-        />
-        <View style={styles.row}>
-          <Text style={styles.loginWith}>Already have an account? </Text>
-          <Pressable onPress={() => props.navigation.goBack()}>
-            <Text style={styles.link}>Login</Text>
-          </Pressable>
-        </View>
-      </View>
-      <BottomModal isVisible={showModal} dismiss={() => setShowModal(false)}>
-        <View
-          style={styles.pickerModal}
-          onPress={() => launchCamera(options, pickerHandler)}>
-          <Text style={styles.inputLabel}>Select</Text>
-          <Pressable style={styles.modalOption}>
-            <Text style={styles.modalText}>Camera</Text>
-          </Pressable>
-          <Pressable
-            style={styles.modalOption}
-            onPress={() => launchImageLibrary(options, pickerHandler)}>
-            <Text style={styles.modalText}>Gallery</Text>
-          </Pressable>
-        </View>
-      </BottomModal>
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  contentContainer: {
-    marginHorizontal: 15,
-  },
-  heading: {
-    color: '#192948',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 28,
-    marginBottom: 10,
-    marginTop: 15,
-  },
-  loginImage: {
-    width: widthPercentageToDP('100%'),
-    height: heightPercentageToDP('34%'),
-  },
-  inputContainer: {
-    borderBottomColor: '#e4e6e5',
-    borderBottomWidth: 1,
-    width: '100%',
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginVertical: 8,
-  },
-  input: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    color: '#212121',
-    width: '95%',
-  },
-  button: {
-    backgroundColor: '#0165ff',
-    borderWidth: 0,
-    width: widthPercentageToDP('85'),
-    height: heightPercentageToDP('6'),
-  },
-  buttonText: {
-    color: '#fff',
-  },
-  loginWith: {
-    textAlign: 'center',
-    color: '#9097a3',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-  },
-  socialButton: {
-    borderColor: '#e4e6e5',
-    borderWidth: 1.4,
-    width: widthPercentageToDP('25'),
-    height: heightPercentageToDP('7'),
-    borderRadius: 10,
-    justifyContent: 'center',
-    alignItems: 'center',
-    padding: 8,
-  },
-  logo: {
-    width: 30,
-    height: 30,
-  },
-  socialContainer: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    justifyContent: 'space-between',
-    width: widthPercentageToDP('80'),
-    alignSelf: 'center',
-    marginVertical: 15,
-  },
-  link: {
-    color: '#2862ab',
-    textAlign: 'center',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    marginHorizontal: 8,
-  },
-  row: {
-    flexDirection: 'row',
-    alignSelf: 'center',
-    alignItems: 'center',
-    paddingBottom: 10,
-  },
-  profileContainer: {
-    width: 150,
-    height: 150,
-    borderRadius: 150 / 2,
-    elevation: 6,
-    alignSelf: 'center',
-    justifyContent: 'center',
-    alignItems: 'center',
-  },
-  profile: {
-    width: 145,
-    height: 145,
-    borderRadius: 145 / 2,
-  },
-  addProfile: {
-    position: 'absolute',
-    bottom: -8,
-    width: 35,
-    height: 35,
-    borderRadius: 33 / 2,
-    alignItems: 'center',
-    justifyContent: 'center',
-    backgroundColor: '#0165ff',
-  },
-  modalOption: {
-    width: '95%',
-    height: heightPercentageToDP('8'),
-    alignSelf: 'center',
-    justifyContent: 'center',
-    borderRadius: 7,
-    alignItems: 'center',
-    marginVertical: 10,
-    backgroundColor: '#efefef',
-  },
-  modalText: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 18,
-  },
-  inputLabel: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 22,
-    color: '#414852',
-    marginHorizontal: 4,
-    marginVertical: 5,
-    alignSelf: 'center',
-  },
-});
-
-export default Login;
diff --git a/src/Screens/SplashScreen.js b/src/Screens/SplashScreen.js
deleted file mode 100644
index b25c54b..0000000
--- a/src/Screens/SplashScreen.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import {Image, StyleSheet, View} from 'react-native';
-import React from 'react';
-
-const HomeScreen = props => {
-  return (
-    <View style={styles.container}>
-      <Image
-        source={require('../../assets/logo.png')}
-        style={styles.logo}
-        resizeMode="contain"
-      />
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-    alignItems: 'center',
-    justifyContent: 'center',
-  },
-  logo: {
-    width: 200,
-  },
-});
-
-export default HomeScreen;
diff --git a/src/Screens/Terms.js b/src/Screens/Terms.js
deleted file mode 100644
index b94c7c6..0000000
--- a/src/Screens/Terms.js
+++ /dev/null
@@ -1,93 +0,0 @@
-import dayjs from 'dayjs';
-import React from 'react';
-import {View, ScrollView, Text, StyleSheet} from 'react-native';
-
-const PrivacyPolicy = props => {
-  return (
-    <ScrollView
-      style={styles.container}
-      contentContainerStyle={styles.contentContainer}>
-      <Text style={styles.heading}>Terms & Conditions</Text>
-      <Text style={styles.title}>Write your Terms Of Use here.?</Text>
-      <View style={styles.paraContainer}>
-        <Text style={styles.para}>
-          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 sdnostrud exercitation ullamco laboris nisi ut
-          aliquip ex ea commodo consequat. 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.
-        </Text>
-      </View>
-
-      <Text style={styles.title}>When do we share personal data?</Text>
-      <View style={styles.paraContainer}>
-        <Text style={styles.para}>
-          Explain that you will treat personal data confidentially and describe
-          the circumstances when you might disclose or share it. Eg, when
-          necessary to provide your services or conduct your business
-          operations, as outlined in your purposes for processing. You should
-          provide information on: how you will share the data what safeguards
-          you will have in place what parties you may share the data with and
-          why
-        </Text>
-      </View>
-      <Text style={styles.title}>
-        How long do we keep your personal data for?
-      </Text>
-      <View style={styles.paraContainer}>
-        <Text style={styles.para}>
-          Provide specific information on the length of time you will keep the
-          information for in relation to each processing purpose. The GDPR
-          requires you to retain data for no longer than reasonably necessary.
-          Include details of your data or records retention schedules, or link
-          to additional resources where these are published.
-        </Text>
-      </View>
-      <Text style={styles.lastUpdate}>
-        Last Updated: {dayjs(new Date()).format('YYYY MMMM DD')}
-      </Text>
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  contentContainer: {
-    marginHorizontal: 14,
-  },
-  heading: {
-    color: '#1a1816',
-    fontFamily: 'Roboto-Black',
-    fontSize: 40,
-  },
-  title: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 22,
-    marginVertical: 8,
-  },
-  paraContainer: {
-    backgroundColor: '#f8f6f5',
-    padding: 10,
-    borderRadius: 8,
-  },
-  para: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14.5,
-    color: '#212121',
-    textAlign: 'justify',
-  },
-  lastUpdate: {
-    color: '#979797',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    marginVertical: 10,
-  },
-});
-
-export default PrivacyPolicy;
diff --git a/src/Screens/User.js b/src/Screens/User.js
deleted file mode 100644
index 0774900..0000000
--- a/src/Screens/User.js
+++ /dev/null
@@ -1,400 +0,0 @@
-import React, {useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  ScrollView,
-  Image,
-  Pressable,
-  TouchableOpacity,
-} from 'react-native';
-import UserData from '../Utils/User.json';
-import {Description} from '../Screens/Channel';
-import {numberSeperator} from '../Utils/Util';
-import {LineChart, BarChart} from 'react-native-chart-kit';
-import {AllTimes, MonthLabels, WeekLabels} from '../Utils/Labes';
-import {widthPercentageToDP} from '../Utils/DpToPixel';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {BottomModal, Button} from '../Modules';
-import {displayName} from '../../app.json';
-
-const data = {
-  labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
-  datasets: [
-    {
-      data: [20, 45, 28, 80, 99, 43],
-    },
-  ],
-};
-
-const UserScreen = props => {
-  const [viewData, setViewData] = useState('week');
-  const [uploadModal, setUploadModal] = useState(false);
-  const [noContent] = useState(false);
-  const [loggedUser] = useState(true);
-
-  const chartConfig = {
-    decimalPlaces: 0, // optional, defaults to 2dp
-    color: (opacity = 1) => '#04abf2',
-    strokeWidth: 1,
-    barPercentage: 0.5,
-    fillShadowGradient: '#04abf2',
-    fillShadowGradientOpacity: 1,
-    labelColor: (opacity = 1) => `rgba(255, 255, 255, ${opacity})`,
-    height: 5000,
-    style: {
-      borderRadius: 16,
-    },
-    propsForBackgroundLines: {
-      strokeWidth: 1,
-      stroke: '#04abf2',
-      strokeDasharray: '0',
-    },
-  };
-
-  const getWidth = widthData => {
-    let width = 96;
-    return widthData.length >= 25 ? width + 4 + widthData.length : width;
-  };
-
-  if (!loggedUser) {
-    return (
-      <View style={styles.loginContainer}>
-        <Image
-          source={require('../../assets/logo.png')}
-          style={styles.logo}
-          resizeMode="contain"
-        />
-        <Text style={styles.loginHeading}>Join the family</Text>
-        <Text style={styles.description}>
-          Create your {displayName} Account or Login to share your videos with
-          the community
-        </Text>
-        <Button
-          title="Register or Login"
-          styleProps={styles.loginButton}
-          textStyle={styles.loginText}
-        />
-      </View>
-    );
-  }
-
-  return (
-    <View style={styles.container}>
-      <ScrollView
-        style={styles.container}
-        contentContainerStyle={styles.contentContainer}>
-        <Image source={{uri: UserData?.avtar}} style={styles.avtar} />
-        <Text style={styles.name}>{UserData?.name}</Text>
-        <Button
-          title="Edit"
-          onPress={() =>
-            props.navigation.navigate('EditProfile', {
-              channelName: UserData?.name,
-            })
-          }
-        />
-        <View style={styles.channelDescription}>
-          <Description
-            head={numberSeperator(UserData?.totalFollowers)}
-            title="Followers"
-          />
-          <Text style={styles.divider}>|</Text>
-          <Description
-            head={`$ ${UserData?.totalEarning}`}
-            title="Total Earnings"
-          />
-          <Text style={styles.divider}>|</Text>
-          <Description
-            head={numberSeperator(UserData?.totalViews)}
-            title="Views"
-          />
-        </View>
-        {noContent ? (
-          <View style={styles.noContent}>
-            <Image
-              source={require('../../assets/noContent.png')}
-              style={styles.vector}
-              resizeMode="contain"
-            />
-            <View style={styles.noContentDetail}>
-              <Text style={styles.noContentHeading}>No Content available</Text>
-              <Button title="Upload Video" />
-            </View>
-          </View>
-        ) : (
-          <View>
-            <Text style={styles.heading}>Analytics</Text>
-            <View style={styles.division}>
-              <Text
-                style={
-                  viewData === 'allTime' ? styles.selectedOption : styles.option
-                }
-                onPress={() => setViewData('allTime')}>
-                All Times
-              </Text>
-              <Text
-                style={
-                  viewData === 'month' ? styles.selectedOption : styles.option
-                }
-                onPress={() => setViewData('month')}>
-                This Month
-              </Text>
-              <Text
-                style={
-                  viewData === 'week' ? styles.selectedOption : styles.option
-                }
-                onPress={() => setViewData('week')}>
-                This Week
-              </Text>
-            </View>
-            <ScrollView
-              horizontal={true}
-              contentOffset={
-                getWidth(
-                  viewData === 'month'
-                    ? MonthLabels
-                    : viewData === 'week'
-                    ? WeekLabels
-                    : AllTimes,
-                ) < 90
-                  ? {x: 10000, y: 0}
-                  : {x: 0, y: 0}
-              }
-              showsHorizontalScrollIndicator={false}>
-              <LineChart
-                data={{
-                  labels:
-                    viewData === 'month'
-                      ? MonthLabels
-                      : viewData === 'week'
-                      ? WeekLabels
-                      : AllTimes,
-                  datasets: [
-                    {
-                      data:
-                        viewData === 'month'
-                          ? UserData?.thisMonthsViews
-                          : viewData === 'week'
-                          ? UserData?.thisWeeksViews
-                          : UserData?.allTime,
-                    },
-                  ],
-                }}
-                width={widthPercentageToDP(
-                  getWidth(
-                    viewData === 'month'
-                      ? MonthLabels
-                      : viewData === 'week'
-                      ? WeekLabels
-                      : AllTimes,
-                  ).toString(),
-                )}
-                height={240}
-                yAxisInterval={1}
-                chartConfig={{
-                  backgroundColor: '#e26a00',
-                  backgroundGradientFrom: '#fb8c00',
-                  backgroundGradientTo: '#ffa726',
-                  decimalPlaces: 0, // optional, defaults to 2dp
-                  color: (opacity = 1) => `rgba(255, 255, 255, ${opacity})`,
-                  labelColor: (opacity = 1) =>
-                    `rgba(255, 255, 255, ${opacity})`,
-                  style: {
-                    borderRadius: 16,
-                  },
-                  propsForDots: {
-                    r: '6',
-                    strokeWidth: '2',
-                    stroke: '#ffa726',
-                  },
-                }}
-                x
-                bezier
-                style={styles.chart}
-                verticalLabelRotation={340}
-              />
-            </ScrollView>
-            <Text style={styles.heading}>Earning</Text>
-            <BarChart
-              style={styles.chart}
-              data={data}
-              width={widthPercentageToDP('96%')}
-              height={230}
-              yAxisLabel="$"
-              chartConfig={chartConfig}
-              withInnerLines={false}
-            />
-            <TouchableOpacity
-              style={styles.floatingButton}
-              onPress={() => setUploadModal(true)}>
-              <Icon name="add-outline" color="#fff" size={28} />
-            </TouchableOpacity>
-          </View>
-        )}
-      </ScrollView>
-      <View style={styles.margin} />
-      <BottomModal
-        isVisible={uploadModal}
-        dismiss={() => setUploadModal(false)}>
-        <View>
-          <Pressable style={styles.modalOption}>
-            <View style={styles.iconStyle}>
-              <Icon name="cloud-upload-outline" color="#212121" size={28} />
-            </View>
-            <Text style={styles.option}>Upload a video</Text>
-          </Pressable>
-          <Pressable style={styles.modalOption}>
-            <View style={styles.iconStyle}>
-              <Icon name="radio-outline" color="#212121" size={28} />
-            </View>
-            <Text style={styles.option}>Go live</Text>
-          </Pressable>
-        </View>
-      </BottomModal>
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  contentContainer: {
-    flexGrow: 1,
-  },
-  avtar: {
-    height: 90,
-    width: 90,
-    borderRadius: 90 / 2,
-    alignSelf: 'center',
-    marginVertical: 10,
-  },
-  name: {
-    fontFamily: 'Roboto-Black',
-    fontSize: 20,
-    color: '#212121',
-    textAlign: 'center',
-    letterSpacing: 0.28,
-  },
-  channelDescription: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    alignSelf: 'center',
-    marginVertical: 4,
-  },
-  divider: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 33,
-    color: '#929292',
-    marginHorizontal: 5,
-  },
-  division: {
-    flexDirection: 'row',
-  },
-  option: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    marginHorizontal: 10,
-    padding: 8,
-    color: '#212121',
-  },
-  selectedOption: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    backgroundColor: '#ecf3fd',
-    color: '#04abf2',
-    padding: 8,
-    borderRadius: 7,
-    marginHorizontal: 10,
-  },
-  heading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    padding: 11,
-    backgroundColor: '#212121',
-    color: '#fff',
-    marginVertical: 6,
-  },
-  floatingButton: {
-    backgroundColor: '#04abf2',
-    width: 50,
-    height: 50,
-    borderRadius: 25,
-    position: 'absolute',
-    marginHorizontal: 10,
-    alignItems: 'center',
-    bottom: 57,
-    right: 10,
-    justifyContent: 'center',
-  },
-  margin: {
-    height: 48,
-  },
-  iconStyle: {
-    width: 45,
-    height: 45,
-    borderRadius: 45 / 2,
-    backgroundColor: '#f2f2f2',
-    alignItems: 'center',
-    justifyContent: 'center',
-  },
-  modalOption: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    padding: 10,
-  },
-  chart: {
-    marginVertical: 8,
-    borderRadius: 16,
-    paddingRight: 53,
-    marginHorizontal: 7,
-  },
-  loginContainer: {
-    flex: 1,
-    backgroundColor: '#fff',
-    justifyContent: 'center',
-    alignItems: 'center',
-  },
-  logo: {
-    width: 200,
-  },
-  loginHeading: {
-    fontFamily: 'Roboto-Black',
-    color: '#181818',
-    fontSize: 29,
-  },
-  description: {
-    fontFamily: 'Roboto-Medium',
-    color: '#929292',
-    fontSize: 18,
-    textAlign: 'center',
-  },
-  loginButton: {
-    backgroundColor: '#00C6FF',
-    borderWidth: 0,
-    borderRadius: 30,
-  },
-  loginText: {
-    color: '#fff',
-  },
-  noContent: {
-    alignItems: 'center',
-  },
-  noContentHeading: {
-    color: '#606060',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-  },
-  vector: {
-    width: widthPercentageToDP('90'),
-  },
-  noContentDetail: {
-    top: -40,
-    width: '100%',
-    alignItems: 'center',
-  },
-});
-
-export default UserScreen;
diff --git a/src/Screens/UserVideo.js b/src/Screens/UserVideo.js
deleted file mode 100644
index fdb8d0c..0000000
--- a/src/Screens/UserVideo.js
+++ /dev/null
@@ -1,519 +0,0 @@
-import React, {useCallback, useState} from 'react';
-import {
-  View,
-  Text,
-  VirtualizedList,
-  Image,
-  StyleSheet,
-  Pressable,
-  TouchableOpacity,
-  ScrollView,
-} from 'react-native';
-import VideoData from '../Utils/HomeData.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {heightPercentageToDP, widthPercentageToDP} from '../Utils/DpToPixel';
-import BottomModal from '../Modules/BottomModal';
-import {Description} from '../Screens/Channel';
-import {PieChart} from 'react-native-chart-kit';
-
-const ModalOption = props => {
-  const {selected, icon, text, onPress} = props;
-  return (
-    <TouchableOpacity
-      style={selected ? styles.selectedOption : styles.modalHead}
-      onPress={onPress}>
-      <View style={selected ? styles.selectedIcon : styles.iconContain}>
-        <Icon
-          name={selected ? 'checkmark' : icon}
-          size={22}
-          color={selected ? 'white' : '#04abf2'}
-        />
-      </View>
-      <Text style={styles.text}>{text}</Text>
-    </TouchableOpacity>
-  );
-};
-
-const BarChart = props => {
-  const {data, accessor} = props;
-  const getNumbersFromArray = data.map(a => a[accessor]);
-  const getTotal = getNumbersFromArray.reduce((a, b) => {
-    return a + b;
-  }, 0);
-  return data.map(item => {
-    const percent = `${Math.round((item[accessor] / getTotal) * 100)}%`;
-    return (
-      <View style={styles.barChartContainer} key={item?.id}>
-        <Text style={styles.barText}>{item?.name}</Text>
-        <View style={styles.bar}>
-          <View
-            style={{
-              ...styles.filled,
-              width: percent,
-            }}
-          />
-        </View>
-        <Text>{percent}</Text>
-      </View>
-    );
-  });
-};
-
-const UserVideo = props => {
-  const [modal, setModal] = useState(false);
-  const [selectedVideoIndex, setSelectedVideoIndex] = useState(null);
-  const [selectedModalValue, setSelectedModalValue] = useState('lifetime');
-  const [selectedModal, setSelectedModal] = useState(false);
-
-  const chartConfig = {
-    decimalPlaces: 0, // optional, defaults to 2dp
-    fillShadowGradient: '#04abf2',
-    fillShadowGradientOpacity: 1,
-    labelColor: (opacity = 1) => `rgba(255, 255, 255, ${opacity})`,
-    style: {
-      borderRadius: 16,
-    },
-  };
-
-  const trafficSourceData = [
-    {
-      name: 'App search',
-      views: 307,
-      color: 'rgba(0, 113, 209, 1)',
-      legendFontFamily: 'Roboto-Medium',
-      legendFontColor: '#7F7F7F',
-      legendFontSize: 14,
-    },
-    {
-      name: 'Direct or unknown',
-      views: 25,
-      color: 'rgba(99, 179, 0, 1)',
-      legendFontFamily: 'Roboto-Medium',
-      legendFontColor: '#7F7F7F',
-      legendFontSize: 15,
-    },
-    {
-      name: 'External',
-      views: 17,
-      color: 'rgba(230, 153, 14, 1)',
-      legendFontFamily: 'Roboto-Medium',
-      legendFontColor: '#7F7F7F',
-      legendFontSize: 15,
-    },
-    {
-      name: 'Suggested Videos',
-      views: 3,
-      color: '#9b59b6',
-      legendFontFamily: 'Roboto-Medium',
-      legendFontColor: '#7F7F7F',
-      legendFontSize: 15,
-    },
-    {
-      name: 'Channel Page',
-      views: 2,
-      color: '#1abc9c',
-      legendFontFamily: 'Roboto-Medium',
-      legendFontColor: '#7F7F7F',
-      legendFontSize: 15,
-    },
-  ];
-
-  const genderData = [
-    {
-      name: 'Men',
-      counts: 1000,
-      color: '#0095f6',
-      legendFontFamily: 'Roboto-Medium',
-      legendFontColor: '#7F7F7F',
-      legendFontSize: 16,
-    },
-    {
-      name: 'Women',
-      counts: 720,
-      color: '#00376b',
-      legendFontFamily: 'Roboto-Medium',
-      legendFontColor: '#7F7F7F',
-      legendFontSize: 16,
-    },
-  ];
-
-  const topLocation = [
-    {
-      id: 1,
-      name: 'Pakisan',
-      counts: 5172,
-    },
-    {
-      id: 2,
-      name: 'UAE',
-      counts: 412,
-    },
-    {
-      id: 3,
-      name: 'USA',
-      counts: 846,
-    },
-    {
-      id: 4,
-      name: 'India',
-      counts: 12,
-    },
-  ];
-
-  const onClick = index => {
-    setSelectedVideoIndex(index);
-    setModal(true);
-    return;
-  };
-
-  const dismiss = () => {
-    setModal(false);
-    setSelectedVideoIndex(null);
-  };
-
-  const selectedVal = useCallback(() => {
-    return selectedModalValue === 'lifetime'
-      ? 'Lifetime'
-      : selectedModalValue === 'month'
-      ? 'Month'
-      : 'Weekly';
-  }, [selectedModalValue]);
-
-  const getCount = useCallback(() => {
-    return selectedModalValue === 'lifetime'
-      ? VideoData[selectedVideoIndex]?.lifeTimeEarning
-      : selectedModalValue === 'month'
-      ? VideoData[selectedVideoIndex]?.monthEarning
-      : VideoData[selectedVideoIndex]?.weekEarning;
-  }, [selectedModalValue, selectedVideoIndex]);
-
-  const setVal = val => {
-    setSelectedModalValue(val);
-    setSelectedModal(false);
-  };
-
-  const editHandler = () => {
-    setModal(false);
-    props.navigation.navigate('EditVideo', {
-      videoTitle: VideoData[selectedVideoIndex]?.title,
-      index: selectedVideoIndex,
-    });
-  };
-
-  return (
-    <View style={styles.container}>
-      <VirtualizedList
-        data={VideoData}
-        getItem={(item, index) => item[index]}
-        getItemCount={() => VideoData.length}
-        keyExtractor={(item, index) => index.toString()}
-        renderItem={({item, index}) => {
-          return (
-            <Pressable
-              onPress={() => onClick(index)}
-              style={styles.videoContainer}>
-              <Image
-                source={{
-                  uri: item?.thumb,
-                }}
-                resizeMode="cover"
-                style={styles.thumbnail}
-              />
-              <View style={styles.detailContainer}>
-                <View style={styles.titleContainer}>
-                  <Text style={styles.listVideoTitle} numberOfLines={2}>
-                    {item?.title}
-                  </Text>
-                  <Text style={styles.videoDescription} numberOfLines={2}>
-                    {`${item?.views} views . ${
-                      item?.uploaded === 'just now'
-                        ? 'just now'
-                        : `${item?.uploaded} ago`
-                    }`}
-                  </Text>
-                </View>
-              </View>
-            </Pressable>
-          );
-        }}
-        ItemSeparatorComponent={() => <View style={styles.seperator} />}
-      />
-      <BottomModal scrollView isVisible={modal} dismiss={dismiss}>
-        <ScrollView
-          style={styles.insightContainer}
-          contentContainerStyle={styles.insightContent}>
-          <View style={styles.heading}>
-            <Text
-              style={
-                styles.modalHeading
-              }>{`${VideoData[selectedVideoIndex]?.title}: Insight `}</Text>
-            <TouchableOpacity onPress={editHandler}>
-              <Icon name="pencil-outline" color="#212121" size={28} />
-            </TouchableOpacity>
-          </View>
-          <View style={styles.modalShadow} />
-          <View style={styles.modalDetail}>
-            <Description
-              count={VideoData[selectedVideoIndex]?.likes}
-              icon="heart"
-            />
-            <Description
-              count={VideoData[selectedVideoIndex]?.dislikes}
-              icon="heart-dislike"
-            />
-            <Description
-              count={VideoData[selectedVideoIndex]?.totalDownloads}
-              icon="download"
-            />
-            <Description
-              head={VideoData[selectedVideoIndex]?.totalShare}
-              icon="share-social"
-            />
-          </View>
-          <View style={styles.modalShadow} />
-          <View style={styles.modalTile}>
-            <View style={styles.heading}>
-              <Text style={styles.title}>Overview:</Text>
-              <Pressable
-                style={styles.optionSelect}
-                onPress={() => setSelectedModal(true)}>
-                <Text style={styles.optionText}>{selectedVal()}</Text>
-              </Pressable>
-            </View>
-            <View style={styles.modalDetail}>
-              <Description head={getCount()} title="Earning" />
-              <Description count={1248123} title="Views" />
-              <Description count={3475687} title="Watch Hours" />
-            </View>
-            <View style={styles.modalShadow} />
-            <Text style={styles.title}>Traffic source: </Text>
-            <PieChart
-              data={trafficSourceData}
-              width={widthPercentageToDP('85%')}
-              height={230}
-              chartConfig={chartConfig}
-              accessor={'views'}
-              backgroundColor={'transparent'}
-              paddingLeft={'10'}
-              center={[0, 5]}
-            />
-            <View style={styles.modalShadow} />
-            <Text style={styles.title}>Audience: </Text>
-            <PieChart
-              data={genderData}
-              width={widthPercentageToDP('89%')}
-              height={230}
-              chartConfig={chartConfig}
-              accessor={'counts'}
-              backgroundColor={'transparent'}
-              paddingLeft={'15'}
-            />
-            <View style={styles.modalShadow} />
-            <Text style={styles.title}>Top Locations:</Text>
-            <BarChart data={topLocation} accessor={'counts'} />
-            <View style={styles.modalShadow} />
-            <Text style={styles.title}>Description: </Text>
-            <Text
-              style={styles.description}
-              numberOfLines={2}
-              ellipsizeMode="tail">
-              {VideoData[selectedVideoIndex]?.description}
-            </Text>
-          </View>
-        </ScrollView>
-        <BottomModal
-          isVisible={selectedModal}
-          dismiss={() => setSelectedModal(false)}>
-          <View>
-            <Text style={styles.modalHeading}>Overview analytics</Text>
-            <ModalOption
-              text="This Month"
-              icon="calendar"
-              selected={selectedModalValue === 'month'}
-              onPress={() => setVal('month')}
-            />
-            <ModalOption
-              text="This Week"
-              icon="calendar"
-              selected={selectedModalValue === 'week'}
-              onPress={() => setVal('week')}
-            />
-            <ModalOption
-              text="Lifetime"
-              icon="calendar"
-              selected={selectedModalValue === 'lifetime'}
-              onPress={() => setVal('lifetime')}
-              s
-            />
-          </View>
-        </BottomModal>
-      </BottomModal>
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    backgroundColor: '#fff',
-  },
-  thumbnail: {
-    width: '35%',
-    height: heightPercentageToDP('10%'),
-    borderRadius: 8,
-  },
-  videoContainer: {
-    flexDirection: 'row',
-    marginHorizontal: 10,
-    marginVertical: 8,
-    width: '100%',
-    alignItems: 'flex-start',
-  },
-  detailContainer: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    marginVertical: 8,
-    marginHorizontal: 10,
-    alignItems: 'center',
-    width: '48%',
-  },
-  insightContainer: {
-    flex: 1,
-  },
-  insightContent: {
-    flexGrow: 1,
-  },
-  listVideoTitle: {
-    color: '#282828',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16,
-    letterSpacing: 0.1,
-    width: '100%',
-  },
-  titleContainer: {
-    flexDirection: 'column',
-    width: '80%',
-  },
-  modalHeading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    textAlign: 'center',
-  },
-  modalShadow: {
-    width: '100%',
-    borderBottomWidth: 2,
-    borderBottomColor: '#e1e1e1',
-    marginVertical: 6,
-  },
-  modalDetail: {
-    flexDirection: 'row',
-    marginHorizontal: 10,
-    width: '90%',
-    justifyContent: 'space-between',
-    marginVertical: 8,
-  },
-  modalTile: {
-    marginVertical: 6,
-  },
-  heading: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    width: '97%',
-    marginHorizontal: 10,
-    alignItems: 'center',
-  },
-  title: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    color: '#212121',
-    marginHorizontal: 8,
-  },
-  optionSelect: {
-    backgroundColor: '#ecf3fd',
-    borderRadius: 7,
-    marginHorizontal: 5,
-    width: '20%',
-    height: 35,
-    justifyContent: 'center',
-    alignItems: 'center',
-  },
-  optionText: {
-    color: '#04abf2',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-  },
-  iconContain: {
-    backgroundColor: 'rgba(4, 171, 242, 0.2)',
-    width: 40,
-    height: 40,
-    borderRadius: 20,
-    alignItems: 'center',
-    justifyContent: 'center',
-    marginRight: 10,
-  },
-  modalHead: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    width: '100%',
-    marginVertical: 7,
-    paddingHorizontal: 12,
-    paddingVertical: 5,
-  },
-  text: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 17,
-    color: '#212121',
-  },
-  selectedOption: {
-    backgroundColor: '#e5effd',
-    flexDirection: 'row',
-    alignItems: 'center',
-    width: '100%',
-    paddingVertical: 6,
-    marginVertical: 2,
-    paddingHorizontal: 12,
-  },
-  selectedIcon: {
-    backgroundColor: '#04abf2',
-    width: 40,
-    height: 40,
-    borderRadius: 20,
-    alignItems: 'center',
-    justifyContent: 'center',
-    marginRight: 10,
-  },
-  bar: {
-    width: '68%',
-    height: 20,
-    borderRadius: 4,
-    backgroundColor: '#f4f4f4',
-    marginHorizontal: 13,
-  },
-  filled: {
-    backgroundColor: '#47afff',
-    height: 20,
-    borderTopStartRadius: 4,
-    borderBottomStartRadius: 4,
-  },
-  barChartContainer: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginHorizontal: 8,
-    marginVertical: 6,
-  },
-  barText: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 17,
-    color: '#212121',
-    textAlign: 'justify',
-    width: '15%',
-  },
-  description: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 18,
-    marginHorizontal: 10,
-    color: '#212121',
-  },
-});
-
-export default UserVideo;
diff --git a/src/Screens/Verification.js b/src/Screens/Verification.js
deleted file mode 100644
index 982caf7..0000000
--- a/src/Screens/Verification.js
+++ /dev/null
@@ -1,288 +0,0 @@
-import React, {useState} from 'react';
-import {
-  View,
-  Text,
-  StyleSheet,
-  ScrollView,
-  Pressable,
-  TextInput,
-} from 'react-native';
-import {heightPercentageToDP, widthPercentageToDP} from '../Utils/DpToPixel';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {BottomModal, Button} from '../Modules';
-import {launchCamera, launchImageLibrary} from 'react-native-image-picker';
-
-const Process = props => {
-  const {step, text, onPress, enabled = true, done} = props;
-  return (
-    <Pressable
-      // eslint-disable-next-line react-native/no-inline-styles
-      style={{
-        ...styles.stepContainer,
-        backgroundColor: !enabled ? '#f9f9f9' : '#fff',
-      }}
-      {...props}
-      onPress={enabled ? onPress : null}>
-      <View>
-        <Text style={styles.step}>Step {step}</Text>
-        <Text style={styles.detail}>{text}</Text>
-      </View>
-      <Icon
-        name={done ? 'checkmark-circle' : 'cloud-upload-outline'}
-        color={done ? '#04abf2' : '#b7b7b7'}
-        size={28}
-      />
-    </Pressable>
-  );
-};
-
-const Verification = props => {
-  const [modal, setModal] = useState(false);
-  const [infoModal, setInfoModal] = useState(false);
-  const [photoID, setPhotoID] = useState(null);
-  const [selfie, setSelfie] = useState(null);
-  const [pickerValue, setPickerValue] = useState('id');
-  const [info, setInfo] = useState(false);
-  const [fullName, setFullName] = useState('');
-  const [message, setMessage] = useState('');
-
-  const options = {
-    mediaType: 'photo',
-    maxWidth: 480,
-    maxHeight: 480,
-  };
-
-  const pickerHandler = async response => {
-    if (!response.didCancel) {
-      const uri = response.assets[0]?.uri;
-      if (pickerValue === 'id') {
-        setPhotoID(uri);
-      } else {
-        console.log('Selfie => ', selfie);
-        setSelfie(uri);
-      }
-      setModal(false);
-    }
-  };
-
-  const showModal = val => {
-    setModal(true);
-    setPickerValue(val);
-  };
-
-  const infoSubmit = () => {
-    setInfo(true);
-    setInfoModal(false);
-  };
-
-  return (
-    <ScrollView
-      style={styles.container}
-      contentContainerStyle={styles.contentContainer}>
-      <View style={styles.head}>
-        <Text style={styles.heading}>Submit Documents</Text>
-        <Text style={styles.description}>
-          We need verify your information. Please submit the documents below,
-          we'll review your verification request, and provide you verified badge
-          once we review your request.
-        </Text>
-      </View>
-      <Process
-        done={photoID}
-        step={1}
-        text="Photo ID"
-        onPress={() => showModal('id')}
-      />
-      <Process
-        step={2}
-        enabled={photoID}
-        done={selfie}
-        text="Take Selfie"
-        onPress={() => showModal('selfie')}
-      />
-      <Process
-        icon="cloud-upload-outline"
-        step={3}
-        enabled={selfie}
-        done={info}
-        text="Your information"
-        onPress={() => setInfoModal(true)}
-      />
-      <Button
-        title="Submit Request"
-        styleProps={styles.button}
-        textStyle={styles.buttonText}
-      />
-      <BottomModal isVisible={modal} dismiss={() => setModal(false)}>
-        <View style={styles.pickerModal}>
-          <Text style={styles.inputLabel}>Select</Text>
-          <Pressable
-            style={styles.modalOption}
-            onPress={() => launchCamera(options, pickerHandler)}>
-            <Text style={styles.modalText}>Camera</Text>
-          </Pressable>
-          <Pressable
-            style={styles.modalOption}
-            onPress={() => launchImageLibrary(options, pickerHandler)}>
-            <Text style={styles.modalText}>Gallery</Text>
-          </Pressable>
-        </View>
-      </BottomModal>
-      <BottomModal isVisible={infoModal} dismiss={() => setInfoModal(false)}>
-        <View style={styles.infoModal}>
-          <TextInput
-            value={fullName}
-            onChangeText={val => setFullName(val)}
-            placeholder="Full Name"
-            placeholderTextColor="#d0d5da"
-            style={styles.input}
-            maxLength={40}
-          />
-          <TextInput
-            value={message}
-            onChangeText={val => setMessage(val)}
-            placeholder="Message"
-            placeholderTextColor="#d0d5da"
-            multiline
-            style={styles.multilineInput}
-            maxLength={180}
-          />
-          <Text style={styles.charLeft}>{`${message.length}/180`}</Text>
-          <Button title="Submit" onPress={infoSubmit} />
-        </View>
-      </BottomModal>
-    </ScrollView>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    backgroundColor: '#fff',
-    flex: 1,
-  },
-  contentContainer: {
-    flexGrow: 1,
-  },
-  head: {
-    top: 23,
-    marginVertical: 10,
-    marginHorizontal: 12,
-  },
-  heading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 28,
-    color: '#212121',
-    textAlign: 'center',
-    marginVertical: 10,
-  },
-  description: {
-    color: '#292929',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-    textAlign: 'center',
-    lineHeight: 20,
-    marginBottom: 18,
-  },
-  stepContainer: {
-    borderRadius: 4,
-    width: widthPercentageToDP('95%'),
-    height: 80,
-    marginHorizontal: 12,
-    paddingHorizontal: 12,
-    paddingVertical: 8,
-    backgroundColor: '#fff',
-    flexDirection: 'row',
-    alignSelf: 'center',
-    alignItems: 'center',
-    justifyContent: 'space-between',
-    marginVertical: 10,
-    shadowColor: '#000',
-    shadowOffset: {
-      width: 0,
-      height: 1,
-    },
-    shadowOpacity: 0.22,
-    shadowRadius: 2.22,
-
-    elevation: 3,
-  },
-  step: {
-    color: '#d0d0d0',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 16.5,
-    marginVertical: 8,
-  },
-  detail: {
-    color: '#0c0c0c',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 18,
-  },
-  inputLabel: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 17,
-    color: '#414852',
-    marginHorizontal: 4,
-    marginVertical: 5,
-  },
-  modalOption: {
-    width: '95%',
-    height: heightPercentageToDP('8'),
-    alignSelf: 'center',
-    justifyContent: 'center',
-    borderRadius: 7,
-    alignItems: 'center',
-    marginVertical: 10,
-    backgroundColor: '#efefef',
-  },
-  modalText: {
-    color: '#212121',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 18,
-  },
-  input: {
-    borderRadius: 5,
-    borderWidth: 1.5,
-    borderColor: '#b4b4b4',
-    width: '100%',
-    marginHorizontal: 14,
-    marginVertical: 10,
-    color: '#0c0c0c',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 15,
-  },
-  multilineInput: {
-    borderRadius: 5,
-    borderWidth: 1.5,
-    borderColor: '#b4b4b4',
-    width: '100%',
-    height: heightPercentageToDP('14%'),
-    marginHorizontal: 14,
-    marginVertical: 10,
-    color: '#0c0c0c',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14.6,
-    textAlignVertical: 'top',
-  },
-  infoModal: {
-    marginHorizontal: 10,
-    alignItems: 'center',
-  },
-  charLeft: {
-    color: '#0c0c0c',
-    fontFamily: 'Roboto-Medium',
-    fontSize: 13,
-    alignSelf: 'flex-end',
-  },
-  button: {
-    borderRadius: 30,
-    borderWidth: 0,
-    width: '80%',
-    height: 55,
-    backgroundColor: '#04abf2',
-  },
-  buttonText: {
-    color: '#fff',
-  },
-});
-
-export default Verification;
diff --git a/src/Screens/Videos.js b/src/Screens/Videos.js
deleted file mode 100644
index c31666f..0000000
--- a/src/Screens/Videos.js
+++ /dev/null
@@ -1,171 +0,0 @@
-import React, {useState} from 'react';
-import {
-  View,
-  Text,
-  VirtualizedList,
-  Pressable,
-  Image,
-  StyleSheet,
-} from 'react-native';
-import Videos from '../Utils/HomeData.json';
-import Icon from 'react-native-vector-icons/Ionicons';
-import {numberFormat} from '../Utils/Util';
-import Modal from 'react-native-modal';
-
-const VideosScreen = props => {
-  const [optionModal, setOptionModal] = useState(false);
-
-  const renderItem = ({item, index}) => {
-    return (
-      <Pressable
-        style={styles.videoTile}
-        onPress={() =>
-          props.navigation.navigate('Player', {
-            videoIndex: index,
-          })
-        }>
-        <Image
-          source={{
-            uri: item?.thumb,
-          }}
-          style={styles.thumbnail}
-        />
-        <View style={styles.descContainer}>
-          <Text style={styles.title} numberOfLines={2}>
-            {item?.title}
-          </Text>
-          <Text
-            style={styles.channelTitle}
-            numberOfLines={1}
-            onPress={() =>
-              props.navigation.navigate('ChannelScreen', {
-                channelName: item?.channel,
-              })
-            }>
-            {item?.channel}
-          </Text>
-          <Text style={styles.views}>{numberFormat(item?.views)}</Text>
-        </View>
-        <Pressable style={styles.menu} onPress={() => setOptionModal(true)}>
-          <Icon name="ellipsis-vertical" size={24} color="#212121" />
-        </Pressable>
-      </Pressable>
-    );
-  };
-
-  return (
-    <View>
-      <VirtualizedList
-        data={Videos}
-        getItemCount={() => Videos.length}
-        getItem={(item, index) => item[index]}
-        contentContainerStyle={styles.container}
-        renderItem={renderItem}
-        keyExtractor={(item, index) => index?.toString()}
-      />
-      <Modal
-        isVisible={optionModal}
-        style={styles.modal}
-        onBackdropPress={() => setOptionModal(!optionModal)}
-        onBackButtonClick={() => setOptionModal(!optionModal)}>
-        <View style={styles.modalContainer}>
-          <View style={styles.modalLine} />
-          <View style={styles.modalHeader}>
-            <Text style={styles.modalHeading}>Options</Text>
-            <Pressable onPress={() => setOptionModal(!optionModal)}>
-              <Icon name="close-outline" color="#282828" size={26} />
-            </Pressable>
-          </View>
-          <Pressable style={styles.button}>
-            <Icon name="time-outline" color="#282828" size={24} />
-            <Text style={styles.buttonText}>Save to Watch later</Text>
-          </Pressable>
-          <Pressable style={styles.button}>
-            <Icon name="flag-outline" color="#282828" size={24} />
-            <Text style={styles.buttonText}>Report</Text>
-          </Pressable>
-        </View>
-      </Modal>
-    </View>
-  );
-};
-
-const styles = StyleSheet.create({
-  container: {
-    backgroundColor: '#fff',
-  },
-  videoTile: {
-    marginVertical: 6,
-    marginHorizontal: 10,
-    flexDirection: 'row',
-    alignItems: 'center',
-    justifyContent: 'space-between',
-  },
-  thumbnail: {
-    width: 180,
-    height: 100,
-    borderRadius: 10,
-  },
-  descContainer: {
-    marginHorizontal: 8,
-    width: '43%',
-  },
-  title: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 14,
-    color: '#040201',
-  },
-  channelTitle: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 13,
-    color: '#04abf2',
-  },
-  views: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 14,
-    color: '#606060',
-  },
-  modal: {
-    margin: 0,
-    justifyContent: 'flex-end',
-  },
-  modalContainer: {
-    backgroundColor: '#fff',
-    borderTopLeftRadius: 12,
-    borderTopRightRadius: 12,
-    padding: 4,
-  },
-  modalLine: {
-    borderBottomWidth: 4,
-    borderBottomColor: '#282828',
-    width: '11%',
-    alignSelf: 'center',
-    borderRadius: 10,
-    marginVertical: 6,
-    opacity: 0.7,
-  },
-  modalHeader: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    alignItems: 'baseline',
-    marginBottom: 4,
-  },
-  modalHeading: {
-    fontFamily: 'Roboto-Medium',
-    fontSize: 20,
-    marginHorizontal: 10,
-  },
-  buttonText: {
-    fontFamily: 'Roboto-Light',
-    fontSize: 18,
-    marginHorizontal: 6,
-  },
-  button: {
-    flexDirection: 'row',
-    alignItems: 'center',
-    marginHorizontal: 10,
-    marginVertical: 8,
-  },
-});
-
-export default VideosScreen;
diff --git a/src/Utils/BlockedUsers.json b/src/Utils/BlockedUsers.json
deleted file mode 100644
index 7b2f7b5..0000000
--- a/src/Utils/BlockedUsers.json
+++ /dev/null
@@ -1,26 +0,0 @@
-[
-  {
-    "id": 1,
-    "username": "Draco Lucius Malfoy",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/en/1/16/Draco_Mal.JPG",
-    "email": "slytherinheir@gmail.com"
-  },
-  {
-    "id": 2,
-    "username": "Lord Voldemort",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/en/thumb/a/a3/Lordvoldemort.jpg/330px-Lordvoldemort.jpg",
-    "email": "lordvoldemort@darkkmagic.com"
-  },
-  {
-    "id": 7,
-    "username": "Shahrukh Khan",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Shah_Rukh_Khan_2001.jpg",
-    "email": "iamsrk@myworld.com"
-  },
-  {
-    "id": 3,
-    "username": "Harry Potter",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/en/d/d7/Harry_Potter_character_poster.jpg",
-    "email": "potter@gmail.com"
-  }
-]
diff --git a/src/Utils/Categories.json b/src/Utils/Categories.json
deleted file mode 100644
index 3f6b809..0000000
--- a/src/Utils/Categories.json
+++ /dev/null
@@ -1,26 +0,0 @@
-[
-  {
-    "id": 1,
-    "category": "Music"
-  },
-  {
-    "id": 2,
-    "category": "Films & Animations"
-  },
-  {
-    "id": 1,
-    "category": "Sports"
-  },
-  {
-    "id": 1,
-    "category": "Cartoons"
-  },
-  {
-    "id": 1,
-    "category": "TV Series"
-  },
-  {
-    "id": 1,
-    "category": "Travel"
-  }
-]
diff --git a/src/Utils/Channel.json b/src/Utils/Channel.json
deleted file mode 100644
index 5c82f15..0000000
--- a/src/Utils/Channel.json
+++ /dev/null
@@ -1,23 +0,0 @@
-[
-  {
-    "channelId": 1,
-    "name": "Youtube Clone - React Native",
-    "cover": "https://i.imgur.com/NxWQSkv.jpeg",
-    "avtar": "https://i.imgur.com/8mD8fJp.jpeg",
-    "description": "React Native (also known as RN) is a popular JavaScript-based mobile app framework that allows you to build natively-rendered mobile apps for iOS and Android. The framework lets you create an application for various platforms by using the same codebase.",
-    "links": {
-      "facebook": "https://www.facebook.com/anwerxolangi/",
-      "instagram": "https://www.instagram.com/anwersolangi/",
-      "website": "https://codecanyon.net/user/anwersolangi/portfolio",
-      "twitter": "https://twitter.com/anwerxolangi"
-    },
-    "moreInfo": {
-      "link": "yoursite.com/dummychannellink",
-      "totalViews": "1,118,410,342",
-      "totalVideos": "3K",
-      "followers": "1.27M",
-      "joined": "Sun Jul 04 2021 14:48:18 GMT+0500",
-      "location": "Karachi, Sindh"
-    }
-  }
-]
diff --git a/src/Utils/Comments.json b/src/Utils/Comments.json
deleted file mode 100644
index 0d5b3bf..0000000
--- a/src/Utils/Comments.json
+++ /dev/null
@@ -1,122 +0,0 @@
-[
-  {
-    "id": 1,
-    "username": "Draco Lucius Malfoy",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/en/1/16/Draco_Mal.JPG",
-    "comment": "Wow nice video!!!!",
-    "likes": 12,
-    "dislikes": 0
-  },
-  {
-    "id": 2,
-    "username": "Lord Voldemort",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/en/thumb/a/a3/Lordvoldemort.jpg/330px-Lordvoldemort.jpg",
-    "comment": "Hows it working???",
-    "likes": 100,
-    "dislikes": 40
-  },
-  {
-    "id": 7,
-    "username": "Shahrukh Khan",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Shah_Rukh_Khan_2001.jpg",
-    "comment": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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.",
-    "likes": 12,
-    "dislikes": 8
-  },
-  {
-    "id": 3,
-    "username": "Harry Potter",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/en/d/d7/Harry_Potter_character_poster.jpg",
-    "comment": "Dummy Comment for testing purpose.........",
-    "likes": 4,
-    "dislikes": 12
-  },
-  {
-    "id": 5,
-    "username": "Mark",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Mark_Zuckerberg_F8_2019_Keynote_%2832830578717%29_%28cropped%29.jpg/330px-Mark_Zuckerberg_F8_2019_Keynote_%2832830578717%29_%28cropped%29.jpg",
-    "comment": "Dummy comment, dummy user, generated from mockaroo",
-    "likes": 23,
-    "dislikes": 20
-  },
-  {
-    "id": 4,
-    "username": "Severus Snape",
-    "profileAvtar": "https://random.imagecdn.app/500/150",
-    "comment": "https://upload.wikimedia.org/wikipedia/en/b/b9/Ootp076.jpg",
-    "likes": 12,
-    "dislikes": 0
-  },
-  {
-    "id": 6,
-    "username": "Sirius Black",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/en/6/6b/Sirius_Black.jpeg",
-    "comment": "This is the long dummy comment, with lorem Ipsum text, with multine purposes",
-    "likes": 12,
-    "dislikes": 5
-  },
-  {
-    "id": 8,
-    "username": "Sherlock Holmes",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/commons/c/cd/Sherlock_Holmes_Portrait_Paget.jpg",
-    "comment": "Who is watching this video in 2021?",
-    "likes": 120,
-    "dislikes": 6
-  },
-  {
-    "id": 9,
-    "username": "Jay Gatsby",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/en/4/42/JayGatsby1.jpg",
-    "comment": "Great :)",
-    "likes": 11,
-    "dislikes": 0
-  },
-  {
-    "id": 10,
-    "username": "Ronald Bilius Weasley",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/en/5/5e/Ron_Weasley_poster.jpg",
-    "comment": "Hello World!",
-    "likes": 15,
-    "dislikes": 1
-  },
-  {
-    "id": 11,
-    "username": "Captain America",
-    "profileAvtar": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Richard_Armitage_2014_%28cropped%29.jpg/375px-Richard_Armitage_2014_%28cropped%29.jpg",
-    "comment": "React Native",
-    "likes": 0,
-    "dislikes": 0
-  },
-  {
-    "id": 12,
-    "username": "Myrlene",
-    "profileAvtar": "https://random.imagecdn.app/500/150",
-    "comment": "Android 10",
-    "likes": 122,
-    "dislikes": 0
-  },
-  {
-    "id": 13,
-    "username": "Maureen",
-    "profileAvtar": "https://random.imagecdn.app/500/150",
-    "comment": "",
-    "likes": 12,
-    "dislikes": 0
-  },
-  {
-    "id": 14,
-    "username": "Olly",
-    "profileAvtar": "https://random.imagecdn.app/500/150",
-    "comment": "This is GOLD!! I WISH I FOUND THIS CHANNEL EARLIER",
-    "likes": 12,
-    "dislikes": 0
-  },
-  {
-    "id": 15,
-    "username": "Jessy",
-    "profileAvtar": "https://random.imagecdn.app/500/150",
-    "comment": "been waiting for this !",
-    "likes": 12,
-    "dislikes": 0
-  }
-]
diff --git a/src/Utils/DpToPixel.js b/src/Utils/DpToPixel.js
deleted file mode 100644
index 24755c6..0000000
--- a/src/Utils/DpToPixel.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import {Dimensions, PixelRatio} from 'react-native';
-
-const widthPercentageToDP = percent => {
-  const screenWidth = Dimensions.get('window').width;
-  const elemWidth = parseFloat(percent);
-  return PixelRatio.roundToNearestPixel((screenWidth * elemWidth) / 100);
-};
-
-const heightPercentageToDP = percent => {
-  const screenHeight = Dimensions.get('window').height;
-  const elemWidth = parseFloat(percent);
-  return PixelRatio.roundToNearestPixel((screenHeight * elemWidth) / 100);
-};
-
-export {widthPercentageToDP, heightPercentageToDP};
diff --git a/src/Utils/Faq.json b/src/Utils/Faq.json
deleted file mode 100644
index ba2e784..0000000
--- a/src/Utils/Faq.json
+++ /dev/null
@@ -1,22 +0,0 @@
-[
-  {
-    "id": 1,
-    "question": "How much I can earn?",
-    "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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."
-  },
-  {
-    "id": 2,
-    "question": "How can i cancel subscription and refund my funds?",
-    "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididun erunt mollit anim id est laborum."
-  },
-  {
-    "id": 3,
-    "question": "How can i withdraw my earnings?",
-    "answer": "Withdrawing funds are really easy, you can go to settings and click on Earnings"
-  },
-  {
-    "id": 4,
-    "question": "How to reach out?",
-    "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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."
-  }
-]
diff --git a/src/Utils/HomeData.json b/src/Utils/HomeData.json
deleted file mode 100644
index f2a0757..0000000
--- a/src/Utils/HomeData.json
+++ /dev/null
@@ -1,275 +0,0 @@
-[
-  {
-    "description": "Big Buck Bunny (code-named Project Peach) is a 2008 short computer-animated comedy film featuring animals of the forest, made by the Blender Institute, part of the Blender Foundation.[6][7] Like the foundation's previous film, Elephants Dream, the film was made using Blender, a free and open-source software application for 3D computer modeling and animation developed by the same foundation. Unlike that earlier project, the tone and visuals departed from a cryptic story and dark visuals to one of comedy, cartoons, and light-heartedness.\n\nBig Buck Bunny (2008). 10 minutes, 35 seconds.\nThe plot follows a day in the life of Big Buck Bunny, during which time he meets three bullying rodents: Frank the flying squirrel (the leader), Rinky the red squirrel, and Gimera the chinchilla (his sidekicks). The rodents amuse themselves by harassing helpless creatures of the forest by throwing fruits, nuts, and rocks at them.\n\nAfter the rodents kill two butterflies with an apple and a rock, and then attack Bunny, he sets aside his gentle nature and orchestrates a complex plan to avenge the two butterflies.\n\nUsing a variety of traps, Bunny first dispatches Rinky and Gimera. Frank, unaware of the fate of the other two, is seen taking off from a tree, and gliding towards a seemingly unsuspecting Bunny. Once airborne, Frank triggers Bunny's final series of traps, causing Frank to crash into a tree branch and plummet into a spike trap below. At the last moment, Frank grabs onto what he believes is the branch of a small tree, but discovers it is just a twig Bunny is holding over the spikes. Bunny snatches up Frank.\n\nThe movie concludes with Bunny being pleased with himself as a butterfly flies past him holding a string, at the end of which is Frank attached as a flying kite.\nIn a post-credits scene, Frank still as a kite, has a bird poop on him.\n\n",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
-    ],
-    "subtitle": "By Blender Foundation",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg",
-    "title": "Big Buck Bunny",
-    "likes": 4345452,
-    "dislikes": 0,
-    "channel": "My Dummy channel",
-    "channelId": 1,
-    "views": 2697904,
-    "uploaded": "4 days",
-    "uploadedDate": "Sun Feb 21 2020 14:48:18 GMT+0500",
-    "totalDownloads": 312,
-    "totalShare": 774,
-    "weekEarning": 23,
-    "monthEarning": 100,
-    "lifeTimeEarning": 500
-  },
-  {
-    "description": "The first Blender Open Movie from 2006",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4"
-    ],
-    "subtitle": "By Blender Foundation",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ElephantsDream.jpg",
-    "title": "Elephant Dream",
-    "likes": 50,
-    "dislikes": 2,
-    "channel": "This is the long channel",
-    "channelId": 1,
-    "views": 100,
-    "uploaded": "3 months",
-    "uploadedDate": "Sun Jun 12 2021 14:48:18 GMT+0500",
-    "totalDownloads": 2,
-    "totalShare": 74,
-    "weekEarning": 12,
-    "monthEarning": 132,
-    "lifeTimeEarning": 155
-  },
-  {
-    "description": "HBO GO now works with Chromecast -- the easiest way to enjoy online video on your TV. For when you want to settle into your Iron Throne to watch the latest episodes. For $35.\nLearn how to use Chromecast with HBO GO and more at google.com/chromecast.",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"
-    ],
-    "subtitle": "By Google",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ForBiggerBlazes.jpg",
-    "title": "For Bigger Blazes",
-    "likes": 1000,
-    "dislikes": 0,
-    "channel": "React Native",
-    "channelId": 1,
-    "views": 230150,
-    "uploaded": "4 months",
-    "uploadedDate": "Sun Mar 14 2019 14:48:18 GMT+0500",
-    "totalDownloads": 3264,
-    "totalShare": 78,
-    "weekEarning": 6623,
-    "monthEarning": 56565,
-    "lifeTimeEarning": 86465
-  },
-  {
-    "description": "Introducing Chromecast. The easiest way to enjoy online video and music on your TV—for when Batman's escapes aren't quite big enough. For $35. Learn how to use Chromecast with Google Play Movies and more at google.com/chromecast.",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4"
-    ],
-    "subtitle": "By Google",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ForBiggerEscapes.jpg",
-    "title": "For Bigger Escape",
-    "likes": 0,
-    "dislikes": 50,
-    "channel": "The long channel name",
-    "channelId": 1,
-    "views": 25,
-    "uploaded": "1 year",
-    "uploadedDate": "Sun May 23 2009 14:48:18 GMT+0500",
-    "totalDownloads": 45,
-    "totalShare": 54,
-    "weekEarning": 10,
-    "monthEarning": 22,
-    "lifeTimeEarning": 1687
-  },
-  {
-    "description": "Introducing Chromecast. The easiest way to enjoy online video and music on your TV. For $35.  Find out more at google.com/chromecast.",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4"
-    ],
-    "subtitle": "By Google",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ForBiggerFun.jpg",
-    "title": "For Bigger Fun",
-    "likes": 45,
-    "dislikes": 0,
-    "channel": "SRK Official",
-    "channelId": 1,
-    "views": 0,
-    "uploaded": "1 minutes",
-    "uploadedDate": "Sun Nov 13 2021 14:48:18 GMT+0500",
-    "totalDownloads": 54,
-    "totalShare": 45,
-    "weekEarning": 10,
-    "monthEarning": 50,
-    "lifeTimeEarning": 1687
-  },
-  {
-    "description": "Introducing Chromecast. The easiest way to enjoy online video and music on your TV—for the times that call for bigger joyrides. For $35. Learn how to use Chromecast with YouTube and more at google.com/chromecast.",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerJoyrides.mp4"
-    ],
-    "subtitle": "By Google",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ForBiggerJoyrides.jpg",
-    "title": "For Bigger Joyrides",
-    "likes": 0,
-    "dislikes": 0,
-    "channel": "My Dummy channel",
-    "channelId": 1,
-    "views": 2500,
-    "uploaded": "just now",
-    "uploadedDate": "Sun Dec 11 2011 14:48:18 GMT+0500",
-    "totalDownloads": 21515,
-    "totalShare": 45465465,
-    "weekEarning": 15,
-    "monthEarning": 24,
-    "lifeTimeEarning": 1687
-  },
-  {
-    "description": "Introducing Chromecast. The easiest way to enjoy online video and music on your TV—for when you want to make Buster's big meltdowns even bigger. For $35. Learn how to use Chromecast with Netflix and more at google.com/chromecast.",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4"
-    ],
-    "subtitle": "By Google",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ForBiggerMeltdowns.jpg",
-    "title": "For Bigger Meltdowns",
-    "likes": 5,
-    "dislikes": 12,
-    "channel": "My Dummy channel",
-    "channelId": 1,
-    "views": 20,
-    "uploaded": "2 seconds",
-    "uploadedDate": "Sun Jan 06 2016 14:48:18 GMT+0500",
-    "totalDownloads": 45,
-    "totalShare": 2465,
-    "weekEarning": 48,
-    "monthEarning": 65,
-    "lifeTimeEarning": 4856
-  },
-  {
-    "description": "Sintel is an independently produced short film, initiated by the Blender Foundation as a means to further improve and validate the free/open source 3D creation suite Blender. With initial funding provided by 1000s of donations via the internet community, it has again proven to be a viable development model for both open 3D technology as for independent animation film.\nThis 15 minute film has been realized in the studio of the Amsterdam Blender Institute, by an international team of artists and developers. In addition to that, several crucial technical and creative targets have been realized online, by developers and artists and teams all over the world.\nwww.sintel.org",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4"
-    ],
-    "subtitle": "By Blender Foundation",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/Sintel.jpg",
-    "title": "Sintel",
-    "likes": 43,
-    "dislikes": 0,
-    "channel": "That one channel",
-    "channelId": 1,
-    "views": 100,
-    "uploaded": "3 hours",
-    "uploadedDate": "Sun Jun 05 2051 14:48:18 GMT+0500",
-    "totalDownloads": 312,
-    "totalShare": 774,
-    "weekEarning": 5,
-    "monthEarning": 10,
-    "lifeTimeEarning": 564
-  },
-  {
-    "description": "Smoking Tire takes the all-new Subaru Outback to the highest point we can find in hopes our customer-appreciation Balloon Launch will get some free T-shirts into the hands of our viewers.",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/SubaruOutbackOnStreetAndDirt.mp4"
-    ],
-    "subtitle": "By Garage419",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/SubaruOutbackOnStreetAndDirt.jpg",
-    "title": "Subaru Outback On Street And Dirt",
-    "likes": 43,
-    "dislikes": 0,
-    "channel": "Videos from github",
-    "channelId": 1,
-    "views": 2601,
-    "uploaded": "3 year",
-    "uploadedDate": "Sun Jul 12 2031 14:48:18 GMT+0500",
-    "totalDownloads": 312,
-    "totalShare": 774,
-    "weekEarning": 0,
-    "monthEarning": 0,
-    "lifeTimeEarning": 0
-  },
-  {
-    "description": "Tears of Steel was realized with crowd-funding by users of the open source 3D creation tool Blender. Target was to improve and test a complete open and free pipeline for visual effects in film - and to make a compelling sci-fi film in Amsterdam, the Netherlands.  The film itself, and all raw material used for making it, have been released under the Creatieve Commons 3.0 Attribution license. Visit the tearsofsteel.org website to find out more about this, or to purchase the 4-DVD box with a lot of extras.  (CC) Blender Foundation - https://www.tearsofsteel.org",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/TearsOfSteel.mp4"
-    ],
-    "subtitle": "By Blender Foundation",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/TearsOfSteel.jpg",
-    "title": "Tears of Steel",
-    "likes": 43,
-    "dislikes": 0,
-    "channel": "My Dummy channel",
-    "channelId": 1,
-    "views": 122,
-    "uploaded": "4 months",
-    "uploadedDate": "Sun Aug 09 2011 14:48:18 GMT+0500",
-    "totalDownloads": 312,
-    "totalShare": 774,
-    "weekEarning": 0,
-    "monthEarning": 0,
-    "lifeTimeEarning": 0
-  },
-  {
-    "description": "The Smoking Tire heads out to Adams Motorsports Park in Riverside, CA to test the most requested car of 2010, the Volkswagen GTI. Will it beat the Mazdaspeed3's standard-setting lap time? Watch and see...",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/VolkswagenGTIReview.mp4"
-    ],
-    "subtitle": "By Garage419",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/VolkswagenGTIReview.jpg",
-    "title": "Volkswagen GTI Review",
-    "likes": 43,
-    "dislikes": 0,
-    "channel": "My Dummy channel",
-    "channelId": 1,
-    "views": 4654065,
-    "uploaded": "4 months",
-    "uploadedDate": "Sun Sep 08 2017 14:48:18 GMT+0500",
-    "totalDownloads": 312,
-    "totalShare": 774,
-    "weekEarning": 233,
-    "monthEarning": 123,
-    "lifeTimeEarning": 1687
-  },
-  {
-    "description": "The Smoking Tire is going on the 2010 Bullrun Live Rally in a 2011 Shelby GT500, and posting a video from the road every single day! The only place to watch them is by subscribing to The Smoking Tire or watching at BlackMagicShine.com",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/WeAreGoingOnBullrun.mp4"
-    ],
-    "subtitle": "By Garage419",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/WeAreGoingOnBullrun.jpg",
-    "title": "We Are Going On Bullrun",
-    "likes": 43,
-    "dislikes": 0,
-    "channel": "My Dummy channel",
-    "channelId": 1,
-    "views": 151051,
-    "uploaded": "4 months",
-    "uploadedDate": "Sun Nov 29 2019 14:48:18 GMT+0500",
-    "totalDownloads": 312,
-    "totalShare": 774,
-    "weekEarning": 46,
-    "monthEarning": 456,
-    "lifeTimeEarning": 79876
-  },
-  {
-    "description": "The Smoking Tire meets up with Chris and Jorge from CarsForAGrand.com to see just how far $1,000 can go when looking for a car.The Smoking Tire meets up with Chris and Jorge from CarsForAGrand.com to see just how far $1,000 can go when looking for a car.",
-    "sources": [
-      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/WhatCarCanYouGetForAGrand.mp4"
-    ],
-    "subtitle": "By Garage419",
-    "thumb": "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/WhatCarCanYouGetForAGrand.jpg",
-    "title": "What care can you get for a grand?",
-    "likes": 43,
-    "dislikes": 0,
-    "channel": "My Dummy channel",
-    "channelId": 1,
-    "views": 12305,
-    "uploaded": "4 months",
-    "uploadedDate": "Sun Dec 30 2020 14:48:18 GMT+0500",
-    "totalDownloads": 312,
-    "totalShare": 774,
-    "weekEarning": 233,
-    "monthEarning": 123,
-    "lifeTimeEarning": 1687
-  }
-]
diff --git a/src/Utils/Labes.js b/src/Utils/Labes.js
deleted file mode 100644
index 3758c5a..0000000
--- a/src/Utils/Labes.js
+++ /dev/null
@@ -1,36 +0,0 @@
-export const MonthLabels = [
-  '1',
-  '2',
-  '3',
-  '4',
-  '5',
-  '6',
-  '7',
-  '8',
-  '9',
-  '10',
-  '11',
-  '12',
-  '13',
-  '14',
-  '15',
-  '16',
-  '17',
-  '18',
-  '19',
-  '20',
-  '21',
-  '22',
-  '23',
-  '24',
-  '25',
-  '26',
-  '27',
-  '28',
-  '29',
-  '30',
-];
-
-export const WeekLabels = ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun'];
-
-export const AllTimes = ['2020', '2019', '2021'];
diff --git a/src/Utils/Notifications.json b/src/Utils/Notifications.json
deleted file mode 100644
index f20266d..0000000
--- a/src/Utils/Notifications.json
+++ /dev/null
@@ -1,42 +0,0 @@
-[
-  {
-    "id": 1,
-    "notification": "Unboxing the youtubeClone",
-    "image": "https://picsum.photos/200/300",
-    "channelAvtar": "https://s3.envato.com/files/335035895/thumbnail.png",
-    "channelName": "My Channel",
-    "isLive": false
-  },
-  {
-    "id": 1,
-    "notification": "Lets explore",
-    "image": "https://picsum.photos/200/300",
-    "channelAvtar": "https://s3.envato.com/files/335035895/thumbnail.png",
-    "channelName": "My Channel",
-    "isLive": true
-  },
-  {
-    "id": 1,
-    "notification": "Facebook with React Native",
-    "image": "https://picsum.photos/200/300",
-    "channelAvtar": "https://s3.envato.com/files/335035895/thumbnail.png",
-    "channelName": "My Channel",
-    "isLive": false
-  },
-  {
-    "id": 1,
-    "notification": "These are the dummy notifications",
-    "image": "https://picsum.photos/200/300",
-    "channelAvtar": "https://s3.envato.com/files/335035895/thumbnail.png",
-    "channelName": "My Channel",
-    "isLive": false
-  },
-  {
-    "id": 1,
-    "notification": "Happiness can be found even in the darkest of time",
-    "image": "https://picsum.photos/200/300",
-    "channelAvtar": "https://s3.envato.com/files/335035895/thumbnail.png",
-    "channelName": "My Channel",
-    "isLive": true
-  }
-]
diff --git a/src/Utils/Purchases.json b/src/Utils/Purchases.json
deleted file mode 100644
index c28235d..0000000
--- a/src/Utils/Purchases.json
+++ /dev/null
@@ -1,17 +0,0 @@
-[
-  {
-    "id": 1,
-    "item": "Subscriptions",
-    "amount": 36
-  },
-  {
-    "id": 2,
-    "item": "Video Rights",
-    "amount": 50
-  },
-  {
-    "id": 3,
-    "item": "Support",
-    "amount": 500
-  }
-]
diff --git a/src/Utils/RecentWords.json b/src/Utils/RecentWords.json
deleted file mode 100644
index b8b60e2..0000000
--- a/src/Utils/RecentWords.json
+++ /dev/null
@@ -1,38 +0,0 @@
-[
-  {
-    "id": 1,
-    "word": "Netflix"
-  },
-  {
-    "id": 2,
-    "word": "Movies"
-  },
-  {
-    "id": 3,
-    "word": "Bollywood"
-  },
-  {
-    "id": 4,
-    "word": "Lollywood"
-  },
-  {
-    "id": 5,
-    "word": "Shawshank"
-  },
-  {
-    "id": 6,
-    "word": "Shahrukh Khan"
-  },
-  {
-    "id": 7,
-    "word": "WhatsupFire"
-  },
-  {
-    "id": 8,
-    "word": "React Native"
-  },
-  {
-    "id": 9,
-    "word": "Random"
-  }
-]
diff --git a/src/Utils/RootNavigation.js b/src/Utils/RootNavigation.js
deleted file mode 100644
index df796d4..0000000
--- a/src/Utils/RootNavigation.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-
-export const navigationRef = React.createRef();
-
-export const isReadyRef = React.createRef();
-
-export function getRouteName() {
-  if (isReadyRef.current && navigationRef.current) {
-    //Perform navigation if the app has mounted;
-    return navigationRef.current;
-  } else {
-    console.log('App is not ready yet!!!');
-  }
-}
diff --git a/src/Utils/Topic.json b/src/Utils/Topic.json
deleted file mode 100644
index db69dad..0000000
--- a/src/Utils/Topic.json
+++ /dev/null
@@ -1,115 +0,0 @@
-[
-  {
-    "id": 1,
-    "topic": "Advertisement partner",
-    "icon": "megaphone-outline",
-    "description": "This space is a resource dedicated to our demand-side advertising partners. Visit here to learn more about our integration process, bidding protocols, ad specs, inventory quality, and more.",
-    "questions": [
-      {
-        "id": 1,
-        "question": "How much I can earn?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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."
-      },
-      {
-        "id": 2,
-        "question": "How can i cancel subscription and refund my funds?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididun erunt mollit anim id est laborum."
-      },
-      {
-        "id": 3,
-        "question": "How can i withdraw my earnings?",
-        "answer": "Withdrawing funds are really easy, you can go to settings and click on Earnings"
-      },
-      {
-        "id": 4,
-        "question": "How to reach out?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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."
-      }
-    ]
-  },
-  {
-    "id": 2,
-    "topic": "Copyright & Community guideliness",
-    "icon": null,
-    "description": "Find out our rules relating to copyright protection as well as community and privacy standards.",
-    "text": "©",
-    "questions": [
-      {
-        "id": 1,
-        "question": "How much I can earn?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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."
-      },
-      {
-        "id": 2,
-        "question": "How can i cancel subscription and refund my funds?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididun erunt mollit anim id est laborum."
-      },
-      {
-        "id": 3,
-        "question": "How can i withdraw my earnings?",
-        "answer": "Withdrawing funds are really easy, you can go to settings and click on Earnings"
-      },
-      {
-        "id": 4,
-        "question": "How to reach out?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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."
-      }
-    ]
-  },
-  {
-    "id": 3,
-    "topic": "Partner program",
-    "icon": "color-filter-outline",
-    "description": "Find out how to upload your videos, manage your content within your partner space and your monetization.",
-    "questions": [
-      {
-        "id": 1,
-        "question": "How much I can earn?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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."
-      },
-      {
-        "id": 2,
-        "question": "How can i cancel subscription and refund my funds?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididun erunt mollit anim id est laborum."
-      },
-      {
-        "id": 3,
-        "question": "How can i withdraw my earnings?",
-        "answer": "Withdrawing funds are really easy, you can go to settings and click on Earnings"
-      },
-      {
-        "id": 4,
-        "question": "How to reach out?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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."
-      }
-    ]
-  },
-  {
-    "id": 4,
-    "topic": "Watching experience",
-    "icon": "desktop-outline",
-    "description": "Find out how to manage your user account, use our app, and all the features offer to improve your watching experience.",
-    "questions": [
-      {
-        "id": 1,
-        "question": "How much I can earn?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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."
-      },
-      {
-        "id": 2,
-        "question": "How can i cancel subscription and refund my funds?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididun erunt mollit anim id est laborum."
-      },
-      {
-        "id": 3,
-        "question": "How can i withdraw my earnings?",
-        "answer": "Withdrawing funds are really easy, you can go to settings and click on Earnings"
-      },
-      {
-        "id": 4,
-        "question": "How to reach out?",
-        "answer": "Lorem ipsum dolor sit amet, consectetur adipiscing 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. 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."
-      }
-    ]
-  }
-]
diff --git a/src/Utils/User.json b/src/Utils/User.json
deleted file mode 100644
index ac9701e..0000000
--- a/src/Utils/User.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
-  "username": "anwersolangi",
-  "name": "Anwer Solangi",
-  "links": {
-    "facebook": "https://www.facebook.com/anwerxolangi/",
-    "instagram": "https://www.instagram.com/anwersolangi/",
-    "website": "https://codecanyon.net/user/anwersolangi/portfolio",
-    "twitter": "https://twitter.com/anwerxolangi"
-  },
-  "avtar": "https://avatars.githubusercontent.com/u/37410529?v=4",
-  "cover": "https://i.imgur.com/NxWQSkv.jpeg",
-  "location": "Karachi, Sindh",
-  "email": "anwerthesolangi@gmail.com",
-  "totalEarning": 1000,
-  "todaysEarning": 50,
-  "monthEarning": 500,
-  "totalViews": 129307123,
-  "totalFollowers": 17613,
-  "totalLikes": 1231,
-  "totalDislikes": 0,
-  "totalComments": 1632,
-  "totalWatch": 400,
-  "thisMonthsViews": [
-    "83",
-    "990",
-    "31",
-    "163",
-    "26",
-    "858",
-    "26",
-    "2",
-    "19",
-    "576",
-    "23",
-    "915",
-    "98",
-    "213",
-    "85",
-    "447",
-    "50",
-    "190",
-    "92",
-    "639",
-    "13",
-    "88",
-    "39",
-    "35",
-    "62",
-    "92",
-    "97",
-    "81",
-    "27",
-    "16",
-    "29",
-    "0",
-    "22",
-    "63",
-    "42",
-    "3",
-    "88",
-    "12",
-    "43",
-    "50",
-    "88"
-  ],
-  "thisWeeksViews": [35, 144194, 12, 235, 149, 0, 123],
-  "allTime": [0, 0, 0]
-}
diff --git a/src/Utils/Util.js b/src/Utils/Util.js
deleted file mode 100644
index b735e5d..0000000
--- a/src/Utils/Util.js
+++ /dev/null
@@ -1,61 +0,0 @@
-export const numberFormat = num => {
-  if (num >= 1000000000) {
-    return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
-  }
-  if (num >= 1000000) {
-    return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
-  }
-  if (num >= 1000) {
-    return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
-  }
-  return num;
-};
-
-export const numberSeperator = number => {
-  return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
-};
-
-export const getMonthString = month => {
-  let string;
-  switch (month) {
-    case 1:
-      string = 'Jan';
-      break;
-    case 2:
-      string = 'Feb';
-      break;
-    case 3:
-      string = 'Mar';
-      break;
-    case 4:
-      string = 'Apr';
-      break;
-    case 5:
-      string = 'May';
-      break;
-    case 6:
-      string = 'Jun';
-      break;
-    case 7:
-      string = 'Jul';
-      break;
-    case 8:
-      string = 'Aug';
-      break;
-    case 9:
-      string = 'Sep';
-      break;
-    case 10:
-      string = 'Oct';
-      break;
-    case 11:
-      string = 'Nov';
-      break;
-    case 12:
-      string = 'Dec';
-      break;
-    default:
-      break;
-  }
-  return string;
-};
diff --git a/src/Utils/countries.json b/src/Utils/countries.json
deleted file mode 100644
index 3f6829a..0000000
--- a/src/Utils/countries.json
+++ /dev/null
@@ -1,267 +0,0 @@
-[
-  { "id": 4, "name": "Afghanistan", "code": "af" },
-  { "id": 8, "name": "Albania", "code": "al" },
-  { "id": 12, "name": "Algeria", "code": "dz" },
-  { "id": 20, "name": "Andorra", "code": "ad" },
-  { "id": 24, "name": "Angola", "code": "ao" },
-  { "id": 28, "name": "Antigua and Barbuda", "code": "ag" },
-  { "id": 32, "name": "Argentina", "code": "ar" },
-  { "id": 51, "name": "Armenia", "code": "am" },
-  { "id": 36, "name": "Australia", "code": "au" },
-  { "id": 40, "name": "Austria", "code": "at" },
-  { "id": 31, "name": "Azerbaijan", "code": "az" },
-  { "id": 44, "name": "Bahamas", "code": "bs" },
-  { "id": 48, "name": "Bahrain", "code": "bh" },
-  { "id": 50, "name": "Bangladesh", "code": "bd" },
-  { "id": 52, "name": "Barbados", "code": "bb" },
-  { "id": 112, "name": "Belarus", "code": "by" },
-  { "id": 56, "name": "Belgium", "code": "be" },
-  { "id": 84, "name": "Belize", "code": "bz" },
-  { "id": 204, "name": "Benin", "code": "bj" },
-  { "id": 64, "name": "Bhutan", "code": "bt" },
-  {
-    "id": 68,
-    "name": "Bolivia (Plurinational State of)",
-    "code": "bo"
-  },
-  {
-    "id": 70,
-    "name": "Bosnia and Herzegovina",
-    "code": "ba"
-  },
-  { "id": 72, "name": "Botswana", "code": "bw" },
-  { "id": 76, "name": "Brazil", "code": "br" },
-  { "id": 96, "name": "Brunei Darussalam", "code": "bn" },
-  { "id": 100, "name": "Bulgaria", "code": "bg" },
-  { "id": 854, "name": "Burkina Faso", "code": "bf" },
-  { "id": 108, "name": "Burundi", "code": "bi" },
-  { "id": 132, "name": "Cabo Verde", "code": "cv" },
-  { "id": 116, "name": "Cambodia", "code": "kh" },
-  { "id": 120, "name": "Cameroon", "code": "cm" },
-  { "id": 124, "name": "Canada", "code": "ca" },
-  {
-    "id": 140,
-    "name": "Central African Republic",
-    "code": "cf"
-  },
-  { "id": 148, "name": "Chad", "code": "td" },
-  { "id": 152, "name": "Chile", "code": "cl" },
-  { "id": 156, "name": "China", "code": "cn" },
-  { "id": 170, "name": "Colombia", "code": "co" },
-  { "id": 174, "name": "Comoros", "code": "km" },
-  { "id": 178, "name": "Congo", "code": "cg" },
-  {
-    "id": 180,
-    "name": "Congo, Democratic Republic of the",
-    "code": "cd"
-  },
-  { "id": 188, "name": "Costa Rica", "code": "cr" },
-  { "id": 384, "name": "Côte d'Ivoire", "code": "ci" },
-  { "id": 191, "name": "Croatia", "code": "hr" },
-  { "id": 192, "name": "Cuba", "code": "cu" },
-  { "id": 196, "name": "Cyprus", "code": "cy" },
-  { "id": 203, "name": "Czechia", "code": "cz" },
-  { "id": 208, "name": "Denmark", "code": "dk" },
-  { "id": 262, "name": "Djibouti", "code": "dj" },
-  { "id": 212, "name": "Dominica", "code": "dm" },
-  { "id": 214, "name": "Dominican Republic", "code": "do" },
-  { "id": 218, "name": "Ecuador", "code": "ec" },
-  { "id": 818, "name": "Egypt", "code": "eg" },
-  { "id": 222, "name": "El Salvador", "code": "sv" },
-  { "id": 226, "name": "Equatorial Guinea", "code": "gq" },
-  { "id": 232, "name": "Eritrea", "code": "er" },
-  { "id": 233, "name": "Estonia", "code": "ee" },
-  { "id": 748, "name": "Eswatini", "code": "sz" },
-  { "id": 231, "name": "Ethiopia", "code": "et" },
-  { "id": 242, "name": "Fiji", "code": "fj" },
-  { "id": 246, "name": "Finland", "code": "fi" },
-  { "id": 250, "name": "France", "code": "fr" },
-  { "id": 266, "name": "Gabon", "code": "ga" },
-  { "id": 270, "name": "Gambia", "code": "gm" },
-  { "id": 268, "name": "Georgia", "code": "ge" },
-  { "id": 276, "name": "Germany", "code": "de" },
-  { "id": 288, "name": "Ghana", "code": "gh" },
-  { "id": 300, "name": "Greece", "code": "gr" },
-  { "id": 308, "name": "Grenada", "code": "gd" },
-  { "id": 320, "name": "Guatemala", "code": "gt" },
-  { "id": 324, "name": "Guinea", "code": "gn" },
-  { "id": 624, "name": "Guinea-Bissau", "code": "gw" },
-  { "id": 328, "name": "Guyana", "code": "gy" },
-  { "id": 332, "name": "Haiti", "code": "ht" },
-  { "id": 340, "name": "Honduras", "code": "hn" },
-  { "id": 348, "name": "Hungary", "code": "hu" },
-  { "id": 352, "name": "Iceland", "code": "is" },
-  { "id": 356, "name": "India", "code": "in" },
-  { "id": 360, "name": "Indonesia", "code": "id" },
-  {
-    "id": 364,
-    "name": "Iran (Islamic Republic of)",
-    "code": "ir"
-  },
-  { "id": 368, "name": "Iraq", "code": "iq" },
-  { "id": 372, "name": "Ireland", "code": "ie" },
-  { "id": 376, "name": "Israel", "code": "il" },
-  { "id": 380, "name": "Italy", "code": "it" },
-  { "id": 388, "name": "Jamaica", "code": "jm" },
-  { "id": 392, "name": "Japan", "code": "jp" },
-  { "id": 400, "name": "Jordan", "code": "jo" },
-  { "id": 398, "name": "Kazakhstan", "code": "kz" },
-  { "id": 404, "name": "Kenya", "code": "ke" },
-  { "id": 296, "name": "Kiribati", "code": "ki" },
-  {
-    "id": 408,
-    "name": "Korea (Democratic People's Republic of)",
-    "code": "kp"
-  },
-  { "id": 410, "name": "Korea, Republic of", "code": "kr" },
-  { "id": 414, "name": "Kuwait", "code": "kw" },
-  { "id": 417, "name": "Kyrgyzstan", "code": "kg" },
-  {
-    "id": 418,
-    "name": "Lao People's Democratic Republic",
-    "code": "la"
-  },
-  { "id": 428, "name": "Latvia", "code": "lv" },
-  { "id": 422, "name": "Lebanon", "code": "lb" },
-  { "id": 426, "name": "Lesotho", "code": "ls" },
-  { "id": 430, "name": "Liberia", "code": "lr" },
-  { "id": 434, "name": "Libya", "code": "ly" },
-  { "id": 438, "name": "Liechtenstein", "code": "li" },
-  { "id": 440, "name": "Lithuania", "code": "lt" },
-  { "id": 442, "name": "Luxembourg", "code": "lu" },
-  { "id": 450, "name": "Madagascar", "code": "mg" },
-  { "id": 454, "name": "Malawi", "code": "mw" },
-  { "id": 458, "name": "Malaysia", "code": "my" },
-  { "id": 462, "name": "Maldives", "code": "mv" },
-  { "id": 466, "name": "Mali", "code": "ml" },
-  { "id": 470, "name": "Malta", "code": "mt" },
-  { "id": 584, "name": "Marshall Islands", "code": "mh" },
-  { "id": 478, "name": "Mauritania", "code": "mr" },
-  { "id": 480, "name": "Mauritius", "code": "mu" },
-  { "id": 484, "name": "Mexico", "code": "mx" },
-  {
-    "id": 583,
-    "name": "Micronesia (Federated States of)",
-    "code": "fm"
-  },
-  {
-    "id": 498,
-    "name": "Moldova, Republic of",
-    "code": "md"
-  },
-  { "id": 492, "name": "Monaco", "code": "mc" },
-  { "id": 496, "name": "Mongolia", "code": "mn" },
-  { "id": 499, "name": "Montenegro", "code": "me" },
-  { "id": 504, "name": "Morocco", "code": "ma" },
-  { "id": 508, "name": "Mozambique", "code": "mz" },
-  { "id": 104, "name": "Myanmar", "code": "mm" },
-  { "id": 516, "name": "Namibia", "code": "na" },
-  { "id": 520, "name": "Nauru", "code": "nr" },
-  { "id": 524, "name": "Nepal", "code": "np" },
-  { "id": 528, "name": "Netherlands", "code": "nl" },
-  { "id": 554, "name": "New Zealand", "code": "nz" },
-  { "id": 558, "name": "Nicaragua", "code": "ni" },
-  { "id": 562, "name": "Niger", "code": "ne" },
-  { "id": 566, "name": "Nigeria", "code": "ng" },
-  { "id": 807, "name": "North Macedonia", "code": "mk" },
-  { "id": 578, "name": "Norway", "code": "no" },
-  { "id": 512, "name": "Oman", "code": "om" },
-  { "id": 586, "name": "Pakistan", "code": "pk" },
-  { "id": 585, "name": "Palau", "code": "pw" },
-  { "id": 591, "name": "Panama", "code": "pa" },
-  { "id": 598, "name": "Papua New Guinea", "code": "pg" },
-  { "id": 600, "name": "Paraguay", "code": "py" },
-  { "id": 604, "name": "Peru", "code": "pe" },
-  { "id": 608, "name": "Philippines", "code": "ph" },
-  { "id": 616, "name": "Poland", "code": "pl" },
-  { "id": 620, "name": "Portugal", "code": "pt" },
-  { "id": 634, "name": "Qatar", "code": "qa" },
-  { "id": 642, "name": "Romania", "code": "ro" },
-  { "id": 643, "name": "Russian Federation", "code": "ru" },
-  { "id": 646, "name": "Rwanda", "code": "rw" },
-  {
-    "id": 659,
-    "name": "Saint Kitts and Nevis",
-    "code": "kn"
-  },
-  { "id": 662, "name": "Saint Lucia", "code": "lc" },
-  {
-    "id": 670,
-    "name": "Saint Vincent and the Grenadines",
-    "code": "vc"
-  },
-  { "id": 882, "name": "Samoa", "code": "ws" },
-  { "id": 674, "name": "San Marino", "code": "sm" },
-  {
-    "id": 678,
-    "name": "Sao Tome and Principe",
-    "code": "st"
-  },
-  { "id": 682, "name": "Saudi Arabia", "code": "sa" },
-  { "id": 686, "name": "Senegal", "code": "sn" },
-  { "id": 688, "name": "Serbia", "code": "rs" },
-  { "id": 690, "name": "Seychelles", "code": "sc" },
-  { "id": 694, "name": "Sierra Leone", "code": "sl" },
-  { "id": 702, "name": "Singapore", "code": "sg" },
-  { "id": 703, "name": "Slovakia", "code": "sk" },
-  { "id": 705, "name": "Slovenia", "code": "si" },
-  { "id": 90, "name": "Solomon Islands", "code": "sb" },
-  { "id": 706, "name": "Somalia", "code": "so" },
-  { "id": 710, "name": "South Africa", "code": "za" },
-  { "id": 728, "name": "South Sudan", "code": "ss" },
-  { "id": 724, "name": "Spain", "code": "es" },
-  { "id": 144, "name": "Sri Lanka", "code": "lk" },
-  { "id": 729, "name": "Sudan", "code": "sd" },
-  { "id": 740, "name": "Suriname", "code": "sr" },
-  { "id": 752, "name": "Sweden", "code": "se" },
-  { "id": 756, "name": "Switzerland", "code": "ch" },
-  {
-    "id": 760,
-    "name": "Syrian Arab Republic",
-    "code": "sy"
-  },
-  { "id": 762, "name": "Tajikistan", "code": "tj" },
-  {
-    "id": 834,
-    "name": "Tanzania, United Republic of",
-    "code": "tz"
-  },
-  { "id": 764, "name": "Thailand", "code": "th" },
-  { "id": 626, "name": "Timor-Leste", "code": "tl" },
-  { "id": 768, "name": "Togo", "code": "tg" },
-  { "id": 776, "name": "Tonga", "code": "to" },
-  { "id": 780, "name": "Trinidad and Tobago", "code": "tt" },
-  { "id": 788, "name": "Tunisia", "code": "tn" },
-  { "id": 792, "name": "Turkey", "code": "tr" },
-  { "id": 795, "name": "Turkmenistan", "code": "tm" },
-  { "id": 798, "name": "Tuvalu", "code": "tv" },
-  { "id": 800, "name": "Uganda", "code": "ug" },
-  { "id": 804, "name": "Ukraine", "code": "ua" },
-  {
-    "id": 784,
-    "name": "United Arab Emirates",
-    "code": "ae"
-  },
-  {
-    "id": 826,
-    "name": "United Kingdom of Great Britain and Northern Ireland",
-    "code": "gb"
-  },
-  {
-    "id": 840,
-    "name": "United States of America",
-    "code": "us"
-  },
-  { "id": 858, "name": "Uruguay", "code": "uy" },
-  { "id": 860, "name": "Uzbekistan", "code": "uz" },
-  { "id": 548, "name": "Vanuatu", "code": "vu" },
-  {
-    "id": 862,
-    "name": "Venezuela (Bolivarian Republic of)",
-    "code": "ve"
-  },
-  { "id": 704, "name": "Viet Nam", "code": "vn" },
-  { "id": 887, "name": "Yemen", "code": "ye" },
-  { "id": 894, "name": "Zambia", "code": "zm" },
-  { "id": 716, "name": "Zimbabwe", "code": "zw" }
-]