Browse Source

Merge pull request #625 from javascript-obfuscator/mangle-properties

Rename properties option
Timofey Kachalov 4 years ago
parent
commit
8bb60da2ad
35 changed files with 6422 additions and 49 deletions
  1. 5 0
      CHANGELOG.md
  2. 45 0
      README.md
  3. 0 0
      dist/index.browser.js
  4. 0 0
      dist/index.cli.js
  5. 0 0
      dist/index.js
  6. 6 6
      package.json
  7. 1 1
      scripts/test-full
  8. 5 0
      src/JavaScriptObfuscator.ts
  9. 6 2
      src/cli/JavaScriptObfuscatorCLI.ts
  10. 2 0
      src/container/InversifyContainerFacade.ts
  11. 1 0
      src/container/ServiceIdentifiers.ts
  12. 1 1
      src/container/modules/node-transformers/ObfuscatingTransformersModule.ts
  13. 21 0
      src/container/modules/node-transformers/RenamePropertiesTransformersModule.ts
  14. 1 0
      src/enums/node-transformers/NodeTransformationStage.ts
  15. 1 0
      src/enums/node-transformers/NodeTransformer.ts
  16. 9 0
      src/interfaces/node-transformers/rename-properties-transformers/replacer/IRenamePropertiesReplacer.ts
  17. 1 0
      src/interfaces/options/IOptions.ts
  18. 139 0
      src/node-transformers/rename-properties-transformers/RenamePropertiesTransformer.ts
  19. 128 0
      src/node-transformers/rename-properties-transformers/replacer/RenamePropertiesReplacer.ts
  20. 5619 0
      src/node-transformers/rename-properties-transformers/replacer/ReservedDomProperties.json
  21. 6 0
      src/options/Options.ts
  22. 1 0
      src/options/presets/Default.ts
  23. 1 0
      src/options/presets/NoCustomNodes.ts
  24. 13 4
      test/dev/dev.ts
  25. 322 0
      test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/RenamePropertiesTransformer.spec.ts
  26. 7 0
      test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/base.js
  27. 5 0
      test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/class-methods.js
  28. 6 0
      test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/nested-objects.js
  29. 7 0
      test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/reserved-properties.js
  30. 5 0
      test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/rest-element.js
  31. 3 0
      test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/split-strings-integration.js
  32. 2 1
      test/index.spec.ts
  33. 8 4
      test/runtime-tests/JavaScriptObfuscatorRuntime.spec.ts
  34. 1 0
      tsconfig.json
  35. 44 30
      yarn.lock

+ 5 - 0
CHANGELOG.md

@@ -1,5 +1,10 @@
 Change Log
 
+v1.1.0
+---
+* **New option:** `renameProperties` enables renaming of property names
+
+
 v1.0.1
 ---
 * Fixed .d.ts typings. https://github.com/javascript-obfuscator/javascript-obfuscator/issues/623

+ 45 - 0
README.md

@@ -330,6 +330,7 @@ Following options are available for the JS Obfuscator:
     inputFileName: '',
     log: false,
     renameGlobals: false,
+    renameProperties: false,
     reservedNames: [],
     reservedStrings: [],
     rotateStringArray: true,
@@ -374,6 +375,7 @@ Following options are available for the JS Obfuscator:
     --identifiers-prefix <string>
     --log <boolean>
     --rename-globals <boolean>
+    --rename-properties <boolean>
     --reserved-names '<list>' (comma separated)
     --reserved-strings '<list>' (comma separated)
     --rotate-string-array <boolean>
@@ -669,6 +671,45 @@ Type: `boolean` Default: `false`
 
 Enables obfuscation of global variable and function names **with declaration**.
 
+### `renameProperties`
+Type: `boolean` Default: `false`
+
+##### :warning: this option **WILL** break your code in most cases. Enable it only if you know what it does!
+
+Enables renaming of property names. All built-in DOM properties and properties in core JavaScript classes will be ignored.
+
+To set format of renamed property names use [`identifierNamesGenerator`](#identifierNamesGenerator) option.
+
+To control which properties will be renamed use [`reservedNames`](#reservedNames) option.
+
+Example: 
+```ts
+// input
+(function () {
+    const foo = {
+        prop1: 1,
+        prop2: 2,
+        calc: function () {
+            return this.prop1 + this.prop2;
+        }
+    };
+    
+    console.log(foo.calc());
+})();
+
+// output
+(function () {
+    const _0x46529b = {
+        '_0x10cec7': 0x1,
+        '_0xc1c0ca': 0x2,
+        '_0x4b961d': function () {
+            return this['_0x10cec7'] + this['_0xc1c0ca'];
+        }
+    };
+    console['log'](_0x46529b['_0x4b961d']());
+}());
+```
+
 ### `reservedNames`
 Type: `string[]` Default: `[]`
 
@@ -1011,6 +1052,10 @@ See: [`Kind of variables`](#kind-of-variables)
 
 See: [`Kind of variables`](#kind-of-variables)
 
+### I enabled `renameProperties` option, and my code broke! What to do?
+
+Just disable this option.
+
 ## Backers
 
 Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/javascript-obfuscator#backer)]

File diff suppressed because it is too large
+ 0 - 0
dist/index.browser.js


File diff suppressed because it is too large
+ 0 - 0
dist/index.cli.js


File diff suppressed because it is too large
+ 0 - 0
dist/index.js


+ 6 - 6
package.json

@@ -1,6 +1,6 @@
 {
   "name": "javascript-obfuscator",
-  "version": "1.0.1",
+  "version": "1.1.0",
   "description": "JavaScript obfuscator",
   "keywords": [
     "obfuscator",
@@ -51,10 +51,10 @@
     "@types/estraverse": "0.0.6",
     "@types/estree": "0.0.44",
     "@types/md5": "2.2.0",
-    "@types/mkdirp": "1.0.0",
+    "@types/mkdirp": "1.0.1",
     "@types/mocha": "7.0.2",
     "@types/multimatch": "4.0.0",
-    "@types/node": "14.0.10",
+    "@types/node": "14.0.11",
     "@types/rimraf": "3.0.0",
     "@types/sinon": "9.0.4",
     "@types/string-template": "1.0.2",
@@ -63,9 +63,9 @@
     "@typescript-eslint/parser": "3.1.0",
     "chai": "4.2.0",
     "coveralls": "3.1.0",
-    "eslint": "7.1.0",
+    "eslint": "7.2.0",
     "eslint-plugin-import": "2.20.2",
-    "eslint-plugin-jsdoc": "27.0.3",
+    "eslint-plugin-jsdoc": "27.0.4",
     "eslint-plugin-no-null": "1.0.2",
     "eslint-plugin-prefer-arrow": "1.2.1",
     "eslint-plugin-unicorn": "20.1.0",
@@ -80,7 +80,7 @@
     "threads": "1.4.1",
     "ts-loader": "7.0.5",
     "ts-node": "6.1.0",
-    "typescript": "3.9.3",
+    "typescript": "3.9.5",
     "webpack": "4.43.0",
     "webpack-cli": "3.3.11",
     "webpack-node-externals": "1.7.2"

+ 1 - 1
scripts/test-full

@@ -2,7 +2,7 @@
 
 yarn run test:removeTmpDir &&
 yarn run test:compile &&
-node test-tmp/test/dev/dev.js &&
+yarn run test:dev &&
 $(yarn bin)/nyc --reporter text-summary $(yarn bin)/mocha -- test-tmp/test/index.spec.js --exit &&
 yarn run test:removeTmpDir &&
 yarn run test:mocha-memory-performance

+ 5 - 0
src/JavaScriptObfuscator.ts

@@ -70,6 +70,7 @@ export class JavaScriptObfuscator implements IJavaScriptObfuscator {
         NodeTransformer.FunctionControlFlowTransformer,
         NodeTransformer.LabeledStatementTransformer,
         NodeTransformer.LiteralTransformer,
+        NodeTransformer.RenamePropertiesTransformer,
         NodeTransformer.MemberExpressionTransformer,
         NodeTransformer.MetadataTransformer,
         NodeTransformer.MethodDefinitionTransformer,
@@ -208,6 +209,10 @@ export class JavaScriptObfuscator implements IJavaScriptObfuscator {
             astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage.ControlFlowFlattening);
         }
 
+        if (this.options.renameProperties) {
+            astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage.RenameProperties);
+        }
+
         astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage.Converting);
         astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage.Obfuscating);
         astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage.Finalizing);

+ 6 - 2
src/cli/JavaScriptObfuscatorCLI.ts

@@ -238,7 +238,7 @@ export class JavaScriptObfuscatorCLI implements IInitializable {
             )
             .option(
                 '--identifiers-prefix <string>',
-                'Sets prefix for all global identifiers.'
+                'Sets prefix for all global identifiers'
             )
             .option(
                 '--identifiers-dictionary <list> (comma separated, without whitespaces)',
@@ -260,7 +260,11 @@ export class JavaScriptObfuscatorCLI implements IInitializable {
                 ArraySanitizer
             )
             .option(
-                '--rename-globals <boolean>', 'Allows to enable obfuscation of global variable and function names with declaration.',
+                '--rename-globals <boolean>', 'Allows to enable obfuscation of global variable and function names with declaration',
+                BooleanSanitizer
+            )
+            .option(
+                '--rename-properties <boolean>', 'UNSAFE: Enables renaming of property names. This probably WILL break your code',
                 BooleanSanitizer
             )
             .option(

+ 2 - 0
src/container/InversifyContainerFacade.ts

@@ -15,6 +15,7 @@ import { nodeTransformersModule } from './modules/node-transformers/NodeTransfor
 import { obfuscatingTransformersModule } from './modules/node-transformers/ObfuscatingTransformersModule';
 import { optionsModule } from './modules/options/OptionsModule';
 import { preparingTransformersModule } from './modules/node-transformers/PreparingTransformersModule';
+import { renamePropertiesTransformersModule } from './modules/node-transformers/RenamePropertiesTransformersModule';
 import { storagesModule } from './modules/storages/StoragesModule';
 import { utilsModule } from './modules/utils/UtilsModule';
 
@@ -215,6 +216,7 @@ export class InversifyContainerFacade implements IInversifyContainerFacade {
         this.container.load(obfuscatingTransformersModule);
         this.container.load(optionsModule);
         this.container.load(preparingTransformersModule);
+        this.container.load(renamePropertiesTransformersModule);
         this.container.load(storagesModule);
         this.container.load(utilsModule);
     }

+ 1 - 0
src/container/ServiceIdentifiers.ts

@@ -44,6 +44,7 @@ export enum ServiceIdentifiers {
     IPrevailingKindOfVariablesAnalyzer = 'IPrevailingKindOfVariablesAnalyzer',
     IObjectExpressionExtractor = 'IObjectExpressionExtractor',
     IRandomGenerator = 'IRandomGenerator',
+    IRenamePropertiesReplacer = 'IRenamePropertiesReplacer',
     IScopeIdentifiersTraverser = 'IScopeIdentifiersTraverser',
     ISourceCode = 'ISourceCode',
     IScopeAnalyzer = 'IScopeAnalyzer',

+ 1 - 1
src/container/modules/node-transformers/ObfuscatingTransformersModule.ts

@@ -45,7 +45,7 @@ export const obfuscatingTransformersModule: interfaces.ContainerModule = new Con
         .to(StringLiteralObfuscatingReplacer)
         .whenTargetNamed(LiteralObfuscatingReplacer.StringLiteralObfuscatingReplacer);
 
-    // identifier obfuscating replacers
+    // identifier obfuscating replacer
     bind<IIdentifierObfuscatingReplacer>(ServiceIdentifiers.IIdentifierObfuscatingReplacer)
         .to(BaseIdentifierObfuscatingReplacer)
         .whenTargetNamed(IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);

+ 21 - 0
src/container/modules/node-transformers/RenamePropertiesTransformersModule.ts

@@ -0,0 +1,21 @@
+import { ContainerModule, interfaces } from 'inversify';
+import { ServiceIdentifiers } from '../../ServiceIdentifiers';
+
+import { IRenamePropertiesReplacer } from '../../../interfaces/node-transformers/rename-properties-transformers/replacer/IRenamePropertiesReplacer';
+import { INodeTransformer } from '../../../interfaces/node-transformers/INodeTransformer';
+
+import { NodeTransformer } from '../../../enums/node-transformers/NodeTransformer';
+
+import { RenamePropertiesReplacer } from '../../../node-transformers/rename-properties-transformers/replacer/RenamePropertiesReplacer';
+import { RenamePropertiesTransformer } from '../../../node-transformers/rename-properties-transformers/RenamePropertiesTransformer';
+
+export const renamePropertiesTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
+    // rename properties transformers
+    bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
+        .to(RenamePropertiesTransformer)
+        .whenTargetNamed(NodeTransformer.RenamePropertiesTransformer);
+
+    // rename properties obfuscating replacer
+    bind<IRenamePropertiesReplacer>(ServiceIdentifiers.IRenamePropertiesReplacer)
+        .to(RenamePropertiesReplacer);
+});

+ 1 - 0
src/enums/node-transformers/NodeTransformationStage.ts

@@ -3,6 +3,7 @@ export enum NodeTransformationStage {
     Preparing = 'Preparing',
     DeadCodeInjection = 'DeadCodeInjection',
     ControlFlowFlattening = 'ControlFlowFlattening',
+    RenameProperties = 'RenameProperties',
     Converting = 'Converting',
     Obfuscating = 'Obfuscating',
     Finalizing = 'Finalizing'

+ 1 - 0
src/enums/node-transformers/NodeTransformer.ts

@@ -14,6 +14,7 @@ export enum NodeTransformer {
     ObjectExpressionKeysTransformer = 'ObjectExpressionKeysTransformer',
     ObjectExpressionTransformer = 'ObjectExpressionTransformer',
     ParentificationTransformer = 'ParentificationTransformer',
+    RenamePropertiesTransformer = 'RenamePropertiesTransformer',
     ScopeIdentifiersTransformer = 'ScopeIdentifiersTransformer',
     SplitStringTransformer = 'SplitStringTransformer',
     TemplateLiteralTransformer = 'TemplateLiteralTransformer',

+ 9 - 0
src/interfaces/node-transformers/rename-properties-transformers/replacer/IRenamePropertiesReplacer.ts

@@ -0,0 +1,9 @@
+import * as ESTree from 'estree';
+
+export interface IRenamePropertiesReplacer {
+    /**
+     * @param {ESTree.Identifier | ESTree.Literal} node
+     * @returns {ESTree.Identifier | ESTree.Literal}
+     */
+    replace (node: ESTree.Identifier | ESTree.Literal): ESTree.Identifier | ESTree.Literal;
+}

+ 1 - 0
src/interfaces/options/IOptions.ts

@@ -22,6 +22,7 @@ export interface IOptions {
     readonly inputFileName: string;
     readonly log: boolean;
     readonly renameGlobals: boolean;
+    readonly renameProperties: boolean;
     readonly reservedNames: string[];
     readonly reservedStrings: string[];
     readonly rotateStringArray: boolean;

+ 139 - 0
src/node-transformers/rename-properties-transformers/RenamePropertiesTransformer.ts

@@ -0,0 +1,139 @@
+import { inject, injectable, } from 'inversify';
+import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
+
+import * as ESTree from 'estree';
+
+import { IRenamePropertiesReplacer } from '../../interfaces/node-transformers/rename-properties-transformers/replacer/IRenamePropertiesReplacer';
+import { IOptions } from '../../interfaces/options/IOptions';
+import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
+import { IVisitor } from '../../interfaces/node-transformers/IVisitor';
+
+import { NodeTransformationStage } from '../../enums/node-transformers/NodeTransformationStage';
+
+import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
+import { NodeGuards } from '../../node/NodeGuards';
+
+@injectable()
+export class RenamePropertiesTransformer extends AbstractNodeTransformer {
+    /**
+     * @type {IRenamePropertiesReplacer}
+     */
+    private readonly renamePropertiesReplacer: IRenamePropertiesReplacer;
+
+    /**
+     * @param {IRenamePropertiesReplacer} renamePropertiesReplacer
+     * @param {IRandomGenerator} randomGenerator
+     * @param {IOptions} options
+     */
+    public constructor (
+        @inject(ServiceIdentifiers.IRenamePropertiesReplacer) renamePropertiesReplacer: IRenamePropertiesReplacer,
+        @inject(ServiceIdentifiers.IRandomGenerator) randomGenerator: IRandomGenerator,
+        @inject(ServiceIdentifiers.IOptions) options: IOptions
+    ) {
+        super(randomGenerator, options);
+
+        this.renamePropertiesReplacer = renamePropertiesReplacer;
+    }
+
+    /**
+     * @param {TNode} propertyNode
+     * @param {ESTree.Expression} propertyKeyNode
+     * @returns {boolean}
+     */
+    private static isValidPropertyNode<
+        TNode extends ESTree.Property | ESTree.MemberExpression | ESTree.MethodDefinition
+    >(
+        propertyNode: TNode,
+        propertyKeyNode: ESTree.Expression
+    ): propertyKeyNode is ESTree.Identifier | ESTree.Literal {
+        if (NodeGuards.isIdentifierNode(propertyKeyNode) && propertyNode.computed) {
+            return false;
+        }
+
+        return NodeGuards.isIdentifierNode(propertyKeyNode) || NodeGuards.isLiteralNode(propertyKeyNode);
+    }
+
+    /**
+     * @param {NodeTransformationStage} nodeTransformationStage
+     * @returns {IVisitor | null}
+     */
+    public getVisitor (nodeTransformationStage: NodeTransformationStage): IVisitor | null {
+        switch (nodeTransformationStage) {
+            case NodeTransformationStage.RenameProperties:
+                return {
+                    enter: (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node | undefined => {
+                        if (parentNode) {
+                            return this.transformNode(node, parentNode);
+                        }
+                    }
+                };
+
+            default:
+                return null;
+        }
+    }
+
+    /**
+     * @param {Node} node
+     * @param {NodeGuards} parentNode
+     * @returns {Node}
+     */
+    public transformNode (node: ESTree.Node, parentNode: ESTree.Node): ESTree.Node {
+        if (NodeGuards.isPropertyNode(node)) {
+            return this.transformPropertyNode(node);
+        }
+
+        if (NodeGuards.isMemberExpressionNode(node)) {
+            return this.transformMemberExpressionNode(node);
+        }
+
+        if (NodeGuards.isMethodDefinitionNode(node)) {
+            return this.transformMethodDefinitionNode(node);
+        }
+
+        return node;
+    }
+
+    /**
+     * @param {Property} propertyNode
+     * @returns {Property}
+     */
+    private transformPropertyNode (propertyNode: ESTree.Property): ESTree.Property {
+        const propertyKeyNode: ESTree.Expression = propertyNode.key;
+
+        if (RenamePropertiesTransformer.isValidPropertyNode(propertyNode, propertyKeyNode)) {
+            propertyNode.key = this.renamePropertiesReplacer.replace(propertyKeyNode);
+            propertyNode.shorthand = false;
+        }
+
+        return propertyNode;
+    }
+
+    /**
+     * @param {Property} memberExpressionNode
+     * @returns {Property}
+     */
+    private transformMemberExpressionNode (memberExpressionNode: ESTree.MemberExpression): ESTree.MemberExpression {
+        const propertyKeyNode: ESTree.Expression = memberExpressionNode.property;
+
+        if (RenamePropertiesTransformer.isValidPropertyNode(memberExpressionNode, propertyKeyNode)) {
+            memberExpressionNode.property = this.renamePropertiesReplacer.replace(propertyKeyNode);
+        }
+
+        return memberExpressionNode;
+    }
+
+    /**
+     * @param {MethodDefinition} methodDefinitionNode
+     * @returns {MethodDefinition}
+     */
+    private transformMethodDefinitionNode (methodDefinitionNode: ESTree.MethodDefinition): ESTree.MethodDefinition {
+        const propertyKeyNode: ESTree.Expression = methodDefinitionNode.key;
+
+        if (RenamePropertiesTransformer.isValidPropertyNode(methodDefinitionNode, propertyKeyNode)) {
+            methodDefinitionNode.key = this.renamePropertiesReplacer.replace(propertyKeyNode);
+        }
+
+        return methodDefinitionNode;
+    }
+}

+ 128 - 0
src/node-transformers/rename-properties-transformers/replacer/RenamePropertiesReplacer.ts

@@ -0,0 +1,128 @@
+import { inject, injectable, } from 'inversify';
+import { ServiceIdentifiers } from '../../../container/ServiceIdentifiers';
+
+import * as ESTree from 'estree';
+
+import { TIdentifierNamesGeneratorFactory } from '../../../types/container/generators/TIdentifierNamesGeneratorFactory';
+
+import { IIdentifierNamesGenerator } from '../../../interfaces/generators/identifier-names-generators/IIdentifierNamesGenerator';
+import { IRenamePropertiesReplacer } from '../../../interfaces/node-transformers/rename-properties-transformers/replacer/IRenamePropertiesReplacer';
+import { IOptions } from '../../../interfaces/options/IOptions';
+
+// eslint-disable-next-line import/no-internal-modules
+import ReservedDomProperties from './ReservedDomProperties.json';
+
+import { NodeGuards } from '../../../node/NodeGuards';
+import { NodeFactory } from '../../../node/NodeFactory';
+
+@injectable()
+export class RenamePropertiesReplacer implements IRenamePropertiesReplacer {
+    /**
+     * @type {IIdentifierNamesGenerator}
+     */
+    private readonly identifierNamesGenerator: IIdentifierNamesGenerator;
+
+    /**
+     * @type {Map<string, string>}
+     * @private
+     */
+    private readonly propertyNamesMap: Map<string, string> = new Map();
+
+    /**
+     * @type {IOptions}
+     */
+    private readonly options: IOptions;
+
+    /**
+     * @type {Set<string>}
+     */
+    private readonly reservedDomPropertiesList: Set<string> = new Set(ReservedDomProperties);
+
+
+    /**
+     * @param {TIdentifierNamesGeneratorFactory} identifierNamesGeneratorFactory
+     * @param {IOptions} options
+     */
+    public constructor (
+        @inject(ServiceIdentifiers.Factory__IIdentifierNamesGenerator)
+            identifierNamesGeneratorFactory: TIdentifierNamesGeneratorFactory,
+        @inject(ServiceIdentifiers.IOptions) options: IOptions
+    ) {
+        this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);
+        this.options = options;
+    }
+
+    /**
+     * @param {ESTree.Identifier | ESTree.Literal} node
+     * @returns {ESTree.Identifier | ESTree.Literal}
+     */
+    public replace (node: ESTree.Identifier | ESTree.Literal): ESTree.Identifier | ESTree.Literal {
+        if (NodeGuards.isIdentifierNode(node)) {
+            return NodeFactory.identifierNode(
+                this.replacePropertyName(node.name)
+            );
+        }
+
+        if (NodeGuards.isLiteralNode(node) && typeof node.value === 'string') {
+            return NodeFactory.literalNode(
+                this.replacePropertyName(node.value)
+            );
+        }
+
+        return node;
+    }
+
+    /**
+     * @param {string} propertyName
+     * @returns {string}
+     * @private
+     */
+    private replacePropertyName (propertyName: string): string {
+        if (this.isReservedName(propertyName)) {
+            return propertyName;
+        }
+
+        let renamedPropertyName: string | null = this.propertyNamesMap.get(propertyName) ?? null;
+
+        if (renamedPropertyName !== null) {
+            return renamedPropertyName;
+        }
+
+        renamedPropertyName = this.identifierNamesGenerator.generateNext();
+        this.propertyNamesMap.set(propertyName, renamedPropertyName);
+
+        return renamedPropertyName;
+    }
+
+    /**
+     * @param {string} name
+     * @returns {boolean}
+     */
+    private isReservedName (name: string): boolean {
+        return this.isReservedOptionName(name)
+            || this.isReservedDomPropertyName(name);
+    }
+
+    /**
+     * @param {string} name
+     * @returns {boolean}
+     */
+    private isReservedOptionName (name: string): boolean {
+        if (!this.options.reservedNames.length) {
+            return false;
+        }
+
+        return this.options.reservedNames
+            .some((reservedName: string) => {
+                return new RegExp(reservedName, 'g').exec(name) !== null;
+            });
+    }
+
+    /**
+     * @param {string} name
+     * @returns {boolean}
+     */
+    private isReservedDomPropertyName (name: string): boolean {
+        return this.reservedDomPropertiesList.has(name);
+    }
+}

+ 5619 - 0
src/node-transformers/rename-properties-transformers/replacer/ReservedDomProperties.json

@@ -0,0 +1,5619 @@
+[
+    "$&",
+    "$'",
+    "$*",
+    "$+",
+    "$1",
+    "$2",
+    "$3",
+    "$4",
+    "$5",
+    "$6",
+    "$7",
+    "$8",
+    "$9",
+    "$_",
+    "$`",
+    "$input",
+    "@@iterator",
+    "ABORT_ERR",
+    "ACTIVE",
+    "ACTIVE_ATTRIBUTES",
+    "ACTIVE_TEXTURE",
+    "ACTIVE_UNIFORMS",
+    "ADDITION",
+    "ALIASED_LINE_WIDTH_RANGE",
+    "ALIASED_POINT_SIZE_RANGE",
+    "ALLOW_KEYBOARD_INPUT",
+    "ALLPASS",
+    "ALPHA",
+    "ALPHA_BITS",
+    "ALT_MASK",
+    "ALWAYS",
+    "ANY_TYPE",
+    "ANY_UNORDERED_NODE_TYPE",
+    "ARRAY_BUFFER",
+    "ARRAY_BUFFER_BINDING",
+    "ATTACHED_SHADERS",
+    "ATTRIBUTE_NODE",
+    "AT_TARGET",
+    "AddSearchProvider",
+    "AnalyserNode",
+    "AnimationEvent",
+    "AnonXMLHttpRequest",
+    "ApplicationCache",
+    "ApplicationCacheErrorEvent",
+    "Array",
+    "ArrayBuffer",
+    "Attr",
+    "Audio",
+    "AudioBuffer",
+    "AudioBufferSourceNode",
+    "AudioContext",
+    "AudioDestinationNode",
+    "AudioListener",
+    "AudioNode",
+    "AudioParam",
+    "AudioProcessingEvent",
+    "AudioStreamTrack",
+    "AutocompleteErrorEvent",
+    "BACK",
+    "BAD_BOUNDARYPOINTS_ERR",
+    "BANDPASS",
+    "BLEND",
+    "BLEND_COLOR",
+    "BLEND_DST_ALPHA",
+    "BLEND_DST_RGB",
+    "BLEND_EQUATION",
+    "BLEND_EQUATION_ALPHA",
+    "BLEND_EQUATION_RGB",
+    "BLEND_SRC_ALPHA",
+    "BLEND_SRC_RGB",
+    "BLUE_BITS",
+    "BLUR",
+    "BOOL",
+    "BOOLEAN_TYPE",
+    "BOOL_VEC2",
+    "BOOL_VEC3",
+    "BOOL_VEC4",
+    "BOTH",
+    "BROWSER_DEFAULT_WEBGL",
+    "BUBBLING_PHASE",
+    "BUFFER_SIZE",
+    "BUFFER_USAGE",
+    "BYTE",
+    "BYTES_PER_ELEMENT",
+    "BarProp",
+    "BaseHref",
+    "BatteryManager",
+    "BeforeLoadEvent",
+    "BeforeUnloadEvent",
+    "BiquadFilterNode",
+    "Blob",
+    "BlobEvent",
+    "Boolean",
+    "CAPTURING_PHASE",
+    "CCW",
+    "CDATASection",
+    "CDATA_SECTION_NODE",
+    "CHANGE",
+    "CHARSET_RULE",
+    "CHECKING",
+    "CLAMP_TO_EDGE",
+    "CLICK",
+    "CLOSED",
+    "CLOSING",
+    "COLOR_ATTACHMENT0",
+    "COLOR_BUFFER_BIT",
+    "COLOR_CLEAR_VALUE",
+    "COLOR_WRITEMASK",
+    "COMMENT_NODE",
+    "COMPILE_STATUS",
+    "COMPRESSED_RGBA_S3TC_DXT1_EXT",
+    "COMPRESSED_RGBA_S3TC_DXT3_EXT",
+    "COMPRESSED_RGBA_S3TC_DXT5_EXT",
+    "COMPRESSED_RGB_S3TC_DXT1_EXT",
+    "COMPRESSED_TEXTURE_FORMATS",
+    "CONNECTING",
+    "CONSTANT_ALPHA",
+    "CONSTANT_COLOR",
+    "CONSTRAINT_ERR",
+    "CONTEXT_LOST_WEBGL",
+    "CONTROL_MASK",
+    "COUNTER_STYLE_RULE",
+    "CSS",
+    "CSS2Properties",
+    "CSSCharsetRule",
+    "CSSConditionRule",
+    "CSSCounterStyleRule",
+    "CSSFontFaceRule",
+    "CSSFontFeatureValuesRule",
+    "CSSGroupingRule",
+    "CSSImportRule",
+    "CSSKeyframeRule",
+    "CSSKeyframesRule",
+    "CSSMediaRule",
+    "CSSMozDocumentRule",
+    "CSSNameSpaceRule",
+    "CSSPageRule",
+    "CSSPrimitiveValue",
+    "CSSRule",
+    "CSSRuleList",
+    "CSSStyleDeclaration",
+    "CSSStyleRule",
+    "CSSStyleSheet",
+    "CSSSupportsRule",
+    "CSSUnknownRule",
+    "CSSValue",
+    "CSSValueList",
+    "CSSVariablesDeclaration",
+    "CSSVariablesRule",
+    "CSSViewportRule",
+    "CSS_ATTR",
+    "CSS_CM",
+    "CSS_COUNTER",
+    "CSS_CUSTOM",
+    "CSS_DEG",
+    "CSS_DIMENSION",
+    "CSS_EMS",
+    "CSS_EXS",
+    "CSS_FILTER_BLUR",
+    "CSS_FILTER_BRIGHTNESS",
+    "CSS_FILTER_CONTRAST",
+    "CSS_FILTER_CUSTOM",
+    "CSS_FILTER_DROP_SHADOW",
+    "CSS_FILTER_GRAYSCALE",
+    "CSS_FILTER_HUE_ROTATE",
+    "CSS_FILTER_INVERT",
+    "CSS_FILTER_OPACITY",
+    "CSS_FILTER_REFERENCE",
+    "CSS_FILTER_SATURATE",
+    "CSS_FILTER_SEPIA",
+    "CSS_GRAD",
+    "CSS_HZ",
+    "CSS_IDENT",
+    "CSS_IN",
+    "CSS_INHERIT",
+    "CSS_KHZ",
+    "CSS_MATRIX",
+    "CSS_MATRIX3D",
+    "CSS_MM",
+    "CSS_MS",
+    "CSS_NUMBER",
+    "CSS_PC",
+    "CSS_PERCENTAGE",
+    "CSS_PERSPECTIVE",
+    "CSS_PRIMITIVE_VALUE",
+    "CSS_PT",
+    "CSS_PX",
+    "CSS_RAD",
+    "CSS_RECT",
+    "CSS_RGBCOLOR",
+    "CSS_ROTATE",
+    "CSS_ROTATE3D",
+    "CSS_ROTATEX",
+    "CSS_ROTATEY",
+    "CSS_ROTATEZ",
+    "CSS_S",
+    "CSS_SCALE",
+    "CSS_SCALE3D",
+    "CSS_SCALEX",
+    "CSS_SCALEY",
+    "CSS_SCALEZ",
+    "CSS_SKEW",
+    "CSS_SKEWX",
+    "CSS_SKEWY",
+    "CSS_STRING",
+    "CSS_TRANSLATE",
+    "CSS_TRANSLATE3D",
+    "CSS_TRANSLATEX",
+    "CSS_TRANSLATEY",
+    "CSS_TRANSLATEZ",
+    "CSS_UNKNOWN",
+    "CSS_URI",
+    "CSS_VALUE_LIST",
+    "CSS_VH",
+    "CSS_VMAX",
+    "CSS_VMIN",
+    "CSS_VW",
+    "CULL_FACE",
+    "CULL_FACE_MODE",
+    "CURRENT_PROGRAM",
+    "CURRENT_VERTEX_ATTRIB",
+    "CUSTOM",
+    "CW",
+    "CanvasGradient",
+    "CanvasPattern",
+    "CanvasRenderingContext2D",
+    "CaretPosition",
+    "ChannelMergerNode",
+    "ChannelSplitterNode",
+    "CharacterData",
+    "ClientRect",
+    "ClientRectList",
+    "Clipboard",
+    "ClipboardEvent",
+    "CloseEvent",
+    "Collator",
+    "CommandEvent",
+    "Comment",
+    "CompositionEvent",
+    "Console",
+    "Controllers",
+    "ConvolverNode",
+    "Counter",
+    "Crypto",
+    "CryptoKey",
+    "CustomEvent",
+    "DATABASE_ERR",
+    "DATA_CLONE_ERR",
+    "DATA_ERR",
+    "DBLCLICK",
+    "DECR",
+    "DECR_WRAP",
+    "DELETE_STATUS",
+    "DEPTH_ATTACHMENT",
+    "DEPTH_BITS",
+    "DEPTH_BUFFER_BIT",
+    "DEPTH_CLEAR_VALUE",
+    "DEPTH_COMPONENT",
+    "DEPTH_COMPONENT16",
+    "DEPTH_FUNC",
+    "DEPTH_RANGE",
+    "DEPTH_STENCIL",
+    "DEPTH_STENCIL_ATTACHMENT",
+    "DEPTH_TEST",
+    "DEPTH_WRITEMASK",
+    "DIRECTION_DOWN",
+    "DIRECTION_LEFT",
+    "DIRECTION_RIGHT",
+    "DIRECTION_UP",
+    "DISABLED",
+    "DISPATCH_REQUEST_ERR",
+    "DITHER",
+    "DOCUMENT_FRAGMENT_NODE",
+    "DOCUMENT_NODE",
+    "DOCUMENT_POSITION_CONTAINED_BY",
+    "DOCUMENT_POSITION_CONTAINS",
+    "DOCUMENT_POSITION_DISCONNECTED",
+    "DOCUMENT_POSITION_FOLLOWING",
+    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC",
+    "DOCUMENT_POSITION_PRECEDING",
+    "DOCUMENT_TYPE_NODE",
+    "DOMCursor",
+    "DOMError",
+    "DOMException",
+    "DOMImplementation",
+    "DOMImplementationLS",
+    "DOMMatrix",
+    "DOMMatrixReadOnly",
+    "DOMParser",
+    "DOMPoint",
+    "DOMPointReadOnly",
+    "DOMQuad",
+    "DOMRect",
+    "DOMRectList",
+    "DOMRectReadOnly",
+    "DOMRequest",
+    "DOMSTRING_SIZE_ERR",
+    "DOMSettableTokenList",
+    "DOMStringList",
+    "DOMStringMap",
+    "DOMTokenList",
+    "DOMTransactionEvent",
+    "DOM_DELTA_LINE",
+    "DOM_DELTA_PAGE",
+    "DOM_DELTA_PIXEL",
+    "DOM_INPUT_METHOD_DROP",
+    "DOM_INPUT_METHOD_HANDWRITING",
+    "DOM_INPUT_METHOD_IME",
+    "DOM_INPUT_METHOD_KEYBOARD",
+    "DOM_INPUT_METHOD_MULTIMODAL",
+    "DOM_INPUT_METHOD_OPTION",
+    "DOM_INPUT_METHOD_PASTE",
+    "DOM_INPUT_METHOD_SCRIPT",
+    "DOM_INPUT_METHOD_UNKNOWN",
+    "DOM_INPUT_METHOD_VOICE",
+    "DOM_KEY_LOCATION_JOYSTICK",
+    "DOM_KEY_LOCATION_LEFT",
+    "DOM_KEY_LOCATION_MOBILE",
+    "DOM_KEY_LOCATION_NUMPAD",
+    "DOM_KEY_LOCATION_RIGHT",
+    "DOM_KEY_LOCATION_STANDARD",
+    "DOM_VK_0",
+    "DOM_VK_1",
+    "DOM_VK_2",
+    "DOM_VK_3",
+    "DOM_VK_4",
+    "DOM_VK_5",
+    "DOM_VK_6",
+    "DOM_VK_7",
+    "DOM_VK_8",
+    "DOM_VK_9",
+    "DOM_VK_A",
+    "DOM_VK_ACCEPT",
+    "DOM_VK_ADD",
+    "DOM_VK_ALT",
+    "DOM_VK_ALTGR",
+    "DOM_VK_AMPERSAND",
+    "DOM_VK_ASTERISK",
+    "DOM_VK_AT",
+    "DOM_VK_ATTN",
+    "DOM_VK_B",
+    "DOM_VK_BACKSPACE",
+    "DOM_VK_BACK_QUOTE",
+    "DOM_VK_BACK_SLASH",
+    "DOM_VK_BACK_SPACE",
+    "DOM_VK_C",
+    "DOM_VK_CANCEL",
+    "DOM_VK_CAPS_LOCK",
+    "DOM_VK_CIRCUMFLEX",
+    "DOM_VK_CLEAR",
+    "DOM_VK_CLOSE_BRACKET",
+    "DOM_VK_CLOSE_CURLY_BRACKET",
+    "DOM_VK_CLOSE_PAREN",
+    "DOM_VK_COLON",
+    "DOM_VK_COMMA",
+    "DOM_VK_CONTEXT_MENU",
+    "DOM_VK_CONTROL",
+    "DOM_VK_CONVERT",
+    "DOM_VK_CRSEL",
+    "DOM_VK_CTRL",
+    "DOM_VK_D",
+    "DOM_VK_DECIMAL",
+    "DOM_VK_DELETE",
+    "DOM_VK_DIVIDE",
+    "DOM_VK_DOLLAR",
+    "DOM_VK_DOUBLE_QUOTE",
+    "DOM_VK_DOWN",
+    "DOM_VK_E",
+    "DOM_VK_EISU",
+    "DOM_VK_END",
+    "DOM_VK_ENTER",
+    "DOM_VK_EQUALS",
+    "DOM_VK_EREOF",
+    "DOM_VK_ESCAPE",
+    "DOM_VK_EXCLAMATION",
+    "DOM_VK_EXECUTE",
+    "DOM_VK_EXSEL",
+    "DOM_VK_F",
+    "DOM_VK_F1",
+    "DOM_VK_F10",
+    "DOM_VK_F11",
+    "DOM_VK_F12",
+    "DOM_VK_F13",
+    "DOM_VK_F14",
+    "DOM_VK_F15",
+    "DOM_VK_F16",
+    "DOM_VK_F17",
+    "DOM_VK_F18",
+    "DOM_VK_F19",
+    "DOM_VK_F2",
+    "DOM_VK_F20",
+    "DOM_VK_F21",
+    "DOM_VK_F22",
+    "DOM_VK_F23",
+    "DOM_VK_F24",
+    "DOM_VK_F25",
+    "DOM_VK_F26",
+    "DOM_VK_F27",
+    "DOM_VK_F28",
+    "DOM_VK_F29",
+    "DOM_VK_F3",
+    "DOM_VK_F30",
+    "DOM_VK_F31",
+    "DOM_VK_F32",
+    "DOM_VK_F33",
+    "DOM_VK_F34",
+    "DOM_VK_F35",
+    "DOM_VK_F36",
+    "DOM_VK_F4",
+    "DOM_VK_F5",
+    "DOM_VK_F6",
+    "DOM_VK_F7",
+    "DOM_VK_F8",
+    "DOM_VK_F9",
+    "DOM_VK_FINAL",
+    "DOM_VK_FRONT",
+    "DOM_VK_G",
+    "DOM_VK_GREATER_THAN",
+    "DOM_VK_H",
+    "DOM_VK_HANGUL",
+    "DOM_VK_HANJA",
+    "DOM_VK_HASH",
+    "DOM_VK_HELP",
+    "DOM_VK_HK_TOGGLE",
+    "DOM_VK_HOME",
+    "DOM_VK_HYPHEN_MINUS",
+    "DOM_VK_I",
+    "DOM_VK_INSERT",
+    "DOM_VK_J",
+    "DOM_VK_JUNJA",
+    "DOM_VK_K",
+    "DOM_VK_KANA",
+    "DOM_VK_KANJI",
+    "DOM_VK_L",
+    "DOM_VK_LEFT",
+    "DOM_VK_LEFT_TAB",
+    "DOM_VK_LESS_THAN",
+    "DOM_VK_M",
+    "DOM_VK_META",
+    "DOM_VK_MODECHANGE",
+    "DOM_VK_MULTIPLY",
+    "DOM_VK_N",
+    "DOM_VK_NONCONVERT",
+    "DOM_VK_NUMPAD0",
+    "DOM_VK_NUMPAD1",
+    "DOM_VK_NUMPAD2",
+    "DOM_VK_NUMPAD3",
+    "DOM_VK_NUMPAD4",
+    "DOM_VK_NUMPAD5",
+    "DOM_VK_NUMPAD6",
+    "DOM_VK_NUMPAD7",
+    "DOM_VK_NUMPAD8",
+    "DOM_VK_NUMPAD9",
+    "DOM_VK_NUM_LOCK",
+    "DOM_VK_O",
+    "DOM_VK_OEM_1",
+    "DOM_VK_OEM_102",
+    "DOM_VK_OEM_2",
+    "DOM_VK_OEM_3",
+    "DOM_VK_OEM_4",
+    "DOM_VK_OEM_5",
+    "DOM_VK_OEM_6",
+    "DOM_VK_OEM_7",
+    "DOM_VK_OEM_8",
+    "DOM_VK_OEM_COMMA",
+    "DOM_VK_OEM_MINUS",
+    "DOM_VK_OEM_PERIOD",
+    "DOM_VK_OEM_PLUS",
+    "DOM_VK_OPEN_BRACKET",
+    "DOM_VK_OPEN_CURLY_BRACKET",
+    "DOM_VK_OPEN_PAREN",
+    "DOM_VK_P",
+    "DOM_VK_PA1",
+    "DOM_VK_PAGEDOWN",
+    "DOM_VK_PAGEUP",
+    "DOM_VK_PAGE_DOWN",
+    "DOM_VK_PAGE_UP",
+    "DOM_VK_PAUSE",
+    "DOM_VK_PERCENT",
+    "DOM_VK_PERIOD",
+    "DOM_VK_PIPE",
+    "DOM_VK_PLAY",
+    "DOM_VK_PLUS",
+    "DOM_VK_PRINT",
+    "DOM_VK_PRINTSCREEN",
+    "DOM_VK_PROCESSKEY",
+    "DOM_VK_PROPERITES",
+    "DOM_VK_Q",
+    "DOM_VK_QUESTION_MARK",
+    "DOM_VK_QUOTE",
+    "DOM_VK_R",
+    "DOM_VK_REDO",
+    "DOM_VK_RETURN",
+    "DOM_VK_RIGHT",
+    "DOM_VK_S",
+    "DOM_VK_SCROLL_LOCK",
+    "DOM_VK_SELECT",
+    "DOM_VK_SEMICOLON",
+    "DOM_VK_SEPARATOR",
+    "DOM_VK_SHIFT",
+    "DOM_VK_SLASH",
+    "DOM_VK_SLEEP",
+    "DOM_VK_SPACE",
+    "DOM_VK_SUBTRACT",
+    "DOM_VK_T",
+    "DOM_VK_TAB",
+    "DOM_VK_TILDE",
+    "DOM_VK_U",
+    "DOM_VK_UNDERSCORE",
+    "DOM_VK_UNDO",
+    "DOM_VK_UNICODE",
+    "DOM_VK_UP",
+    "DOM_VK_V",
+    "DOM_VK_VOLUME_DOWN",
+    "DOM_VK_VOLUME_MUTE",
+    "DOM_VK_VOLUME_UP",
+    "DOM_VK_W",
+    "DOM_VK_WIN",
+    "DOM_VK_WINDOW",
+    "DOM_VK_WIN_ICO_00",
+    "DOM_VK_WIN_ICO_CLEAR",
+    "DOM_VK_WIN_ICO_HELP",
+    "DOM_VK_WIN_OEM_ATTN",
+    "DOM_VK_WIN_OEM_AUTO",
+    "DOM_VK_WIN_OEM_BACKTAB",
+    "DOM_VK_WIN_OEM_CLEAR",
+    "DOM_VK_WIN_OEM_COPY",
+    "DOM_VK_WIN_OEM_CUSEL",
+    "DOM_VK_WIN_OEM_ENLW",
+    "DOM_VK_WIN_OEM_FINISH",
+    "DOM_VK_WIN_OEM_FJ_JISHO",
+    "DOM_VK_WIN_OEM_FJ_LOYA",
+    "DOM_VK_WIN_OEM_FJ_MASSHOU",
+    "DOM_VK_WIN_OEM_FJ_ROYA",
+    "DOM_VK_WIN_OEM_FJ_TOUROKU",
+    "DOM_VK_WIN_OEM_JUMP",
+    "DOM_VK_WIN_OEM_PA1",
+    "DOM_VK_WIN_OEM_PA2",
+    "DOM_VK_WIN_OEM_PA3",
+    "DOM_VK_WIN_OEM_RESET",
+    "DOM_VK_WIN_OEM_WSCTRL",
+    "DOM_VK_X",
+    "DOM_VK_XF86XK_ADD_FAVORITE",
+    "DOM_VK_XF86XK_APPLICATION_LEFT",
+    "DOM_VK_XF86XK_APPLICATION_RIGHT",
+    "DOM_VK_XF86XK_AUDIO_CYCLE_TRACK",
+    "DOM_VK_XF86XK_AUDIO_FORWARD",
+    "DOM_VK_XF86XK_AUDIO_LOWER_VOLUME",
+    "DOM_VK_XF86XK_AUDIO_MEDIA",
+    "DOM_VK_XF86XK_AUDIO_MUTE",
+    "DOM_VK_XF86XK_AUDIO_NEXT",
+    "DOM_VK_XF86XK_AUDIO_PAUSE",
+    "DOM_VK_XF86XK_AUDIO_PLAY",
+    "DOM_VK_XF86XK_AUDIO_PREV",
+    "DOM_VK_XF86XK_AUDIO_RAISE_VOLUME",
+    "DOM_VK_XF86XK_AUDIO_RANDOM_PLAY",
+    "DOM_VK_XF86XK_AUDIO_RECORD",
+    "DOM_VK_XF86XK_AUDIO_REPEAT",
+    "DOM_VK_XF86XK_AUDIO_REWIND",
+    "DOM_VK_XF86XK_AUDIO_STOP",
+    "DOM_VK_XF86XK_AWAY",
+    "DOM_VK_XF86XK_BACK",
+    "DOM_VK_XF86XK_BACK_FORWARD",
+    "DOM_VK_XF86XK_BATTERY",
+    "DOM_VK_XF86XK_BLUE",
+    "DOM_VK_XF86XK_BLUETOOTH",
+    "DOM_VK_XF86XK_BOOK",
+    "DOM_VK_XF86XK_BRIGHTNESS_ADJUST",
+    "DOM_VK_XF86XK_CALCULATOR",
+    "DOM_VK_XF86XK_CALENDAR",
+    "DOM_VK_XF86XK_CD",
+    "DOM_VK_XF86XK_CLOSE",
+    "DOM_VK_XF86XK_COMMUNITY",
+    "DOM_VK_XF86XK_CONTRAST_ADJUST",
+    "DOM_VK_XF86XK_COPY",
+    "DOM_VK_XF86XK_CUT",
+    "DOM_VK_XF86XK_CYCLE_ANGLE",
+    "DOM_VK_XF86XK_DISPLAY",
+    "DOM_VK_XF86XK_DOCUMENTS",
+    "DOM_VK_XF86XK_DOS",
+    "DOM_VK_XF86XK_EJECT",
+    "DOM_VK_XF86XK_EXCEL",
+    "DOM_VK_XF86XK_EXPLORER",
+    "DOM_VK_XF86XK_FAVORITES",
+    "DOM_VK_XF86XK_FINANCE",
+    "DOM_VK_XF86XK_FORWARD",
+    "DOM_VK_XF86XK_FRAME_BACK",
+    "DOM_VK_XF86XK_FRAME_FORWARD",
+    "DOM_VK_XF86XK_GAME",
+    "DOM_VK_XF86XK_GO",
+    "DOM_VK_XF86XK_GREEN",
+    "DOM_VK_XF86XK_HIBERNATE",
+    "DOM_VK_XF86XK_HISTORY",
+    "DOM_VK_XF86XK_HOME_PAGE",
+    "DOM_VK_XF86XK_HOT_LINKS",
+    "DOM_VK_XF86XK_I_TOUCH",
+    "DOM_VK_XF86XK_KBD_BRIGHTNESS_DOWN",
+    "DOM_VK_XF86XK_KBD_BRIGHTNESS_UP",
+    "DOM_VK_XF86XK_KBD_LIGHT_ON_OFF",
+    "DOM_VK_XF86XK_LAUNCH0",
+    "DOM_VK_XF86XK_LAUNCH1",
+    "DOM_VK_XF86XK_LAUNCH2",
+    "DOM_VK_XF86XK_LAUNCH3",
+    "DOM_VK_XF86XK_LAUNCH4",
+    "DOM_VK_XF86XK_LAUNCH5",
+    "DOM_VK_XF86XK_LAUNCH6",
+    "DOM_VK_XF86XK_LAUNCH7",
+    "DOM_VK_XF86XK_LAUNCH8",
+    "DOM_VK_XF86XK_LAUNCH9",
+    "DOM_VK_XF86XK_LAUNCH_A",
+    "DOM_VK_XF86XK_LAUNCH_B",
+    "DOM_VK_XF86XK_LAUNCH_C",
+    "DOM_VK_XF86XK_LAUNCH_D",
+    "DOM_VK_XF86XK_LAUNCH_E",
+    "DOM_VK_XF86XK_LAUNCH_F",
+    "DOM_VK_XF86XK_LIGHT_BULB",
+    "DOM_VK_XF86XK_LOG_OFF",
+    "DOM_VK_XF86XK_MAIL",
+    "DOM_VK_XF86XK_MAIL_FORWARD",
+    "DOM_VK_XF86XK_MARKET",
+    "DOM_VK_XF86XK_MEETING",
+    "DOM_VK_XF86XK_MEMO",
+    "DOM_VK_XF86XK_MENU_KB",
+    "DOM_VK_XF86XK_MENU_PB",
+    "DOM_VK_XF86XK_MESSENGER",
+    "DOM_VK_XF86XK_MON_BRIGHTNESS_DOWN",
+    "DOM_VK_XF86XK_MON_BRIGHTNESS_UP",
+    "DOM_VK_XF86XK_MUSIC",
+    "DOM_VK_XF86XK_MY_COMPUTER",
+    "DOM_VK_XF86XK_MY_SITES",
+    "DOM_VK_XF86XK_NEW",
+    "DOM_VK_XF86XK_NEWS",
+    "DOM_VK_XF86XK_OFFICE_HOME",
+    "DOM_VK_XF86XK_OPEN",
+    "DOM_VK_XF86XK_OPEN_URL",
+    "DOM_VK_XF86XK_OPTION",
+    "DOM_VK_XF86XK_PASTE",
+    "DOM_VK_XF86XK_PHONE",
+    "DOM_VK_XF86XK_PICTURES",
+    "DOM_VK_XF86XK_POWER_DOWN",
+    "DOM_VK_XF86XK_POWER_OFF",
+    "DOM_VK_XF86XK_RED",
+    "DOM_VK_XF86XK_REFRESH",
+    "DOM_VK_XF86XK_RELOAD",
+    "DOM_VK_XF86XK_REPLY",
+    "DOM_VK_XF86XK_ROCKER_DOWN",
+    "DOM_VK_XF86XK_ROCKER_ENTER",
+    "DOM_VK_XF86XK_ROCKER_UP",
+    "DOM_VK_XF86XK_ROTATE_WINDOWS",
+    "DOM_VK_XF86XK_ROTATION_KB",
+    "DOM_VK_XF86XK_ROTATION_PB",
+    "DOM_VK_XF86XK_SAVE",
+    "DOM_VK_XF86XK_SCREEN_SAVER",
+    "DOM_VK_XF86XK_SCROLL_CLICK",
+    "DOM_VK_XF86XK_SCROLL_DOWN",
+    "DOM_VK_XF86XK_SCROLL_UP",
+    "DOM_VK_XF86XK_SEARCH",
+    "DOM_VK_XF86XK_SEND",
+    "DOM_VK_XF86XK_SHOP",
+    "DOM_VK_XF86XK_SPELL",
+    "DOM_VK_XF86XK_SPLIT_SCREEN",
+    "DOM_VK_XF86XK_STANDBY",
+    "DOM_VK_XF86XK_START",
+    "DOM_VK_XF86XK_STOP",
+    "DOM_VK_XF86XK_SUBTITLE",
+    "DOM_VK_XF86XK_SUPPORT",
+    "DOM_VK_XF86XK_SUSPEND",
+    "DOM_VK_XF86XK_TASK_PANE",
+    "DOM_VK_XF86XK_TERMINAL",
+    "DOM_VK_XF86XK_TIME",
+    "DOM_VK_XF86XK_TOOLS",
+    "DOM_VK_XF86XK_TOP_MENU",
+    "DOM_VK_XF86XK_TO_DO_LIST",
+    "DOM_VK_XF86XK_TRAVEL",
+    "DOM_VK_XF86XK_USER1KB",
+    "DOM_VK_XF86XK_USER2KB",
+    "DOM_VK_XF86XK_USER_PB",
+    "DOM_VK_XF86XK_UWB",
+    "DOM_VK_XF86XK_VENDOR_HOME",
+    "DOM_VK_XF86XK_VIDEO",
+    "DOM_VK_XF86XK_VIEW",
+    "DOM_VK_XF86XK_WAKE_UP",
+    "DOM_VK_XF86XK_WEB_CAM",
+    "DOM_VK_XF86XK_WHEEL_BUTTON",
+    "DOM_VK_XF86XK_WLAN",
+    "DOM_VK_XF86XK_WORD",
+    "DOM_VK_XF86XK_WWW",
+    "DOM_VK_XF86XK_XFER",
+    "DOM_VK_XF86XK_YELLOW",
+    "DOM_VK_XF86XK_ZOOM_IN",
+    "DOM_VK_XF86XK_ZOOM_OUT",
+    "DOM_VK_Y",
+    "DOM_VK_Z",
+    "DOM_VK_ZOOM",
+    "DONE",
+    "DONT_CARE",
+    "DOWNLOADING",
+    "DRAGDROP",
+    "DST_ALPHA",
+    "DST_COLOR",
+    "DYNAMIC_DRAW",
+    "DataChannel",
+    "DataTransfer",
+    "DataTransferItem",
+    "DataTransferItemList",
+    "DataView",
+    "Date",
+    "DateTimeFormat",
+    "DelayNode",
+    "DesktopNotification",
+    "DesktopNotificationCenter",
+    "DeviceLightEvent",
+    "DeviceMotionEvent",
+    "DeviceOrientationEvent",
+    "DeviceProximityEvent",
+    "DeviceStorage",
+    "DeviceStorageChangeEvent",
+    "Document",
+    "DocumentFragment",
+    "DocumentType",
+    "DragEvent",
+    "DynamicsCompressorNode",
+    "E",
+    "ELEMENT_ARRAY_BUFFER",
+    "ELEMENT_ARRAY_BUFFER_BINDING",
+    "ELEMENT_NODE",
+    "EMPTY",
+    "ENCODING_ERR",
+    "ENDED",
+    "END_TO_END",
+    "END_TO_START",
+    "ENTITY_NODE",
+    "ENTITY_REFERENCE_NODE",
+    "EPSILON",
+    "EQUAL",
+    "EQUALPOWER",
+    "ERROR",
+    "EXPONENTIAL_DISTANCE",
+    "Element",
+    "ElementQuery",
+    "Entity",
+    "EntityReference",
+    "Error",
+    "ErrorEvent",
+    "EvalError",
+    "Event",
+    "EventException",
+    "EventSource",
+    "EventTarget",
+    "External",
+    "FASTEST",
+    "FIDOSDK",
+    "FILTER_ACCEPT",
+    "FILTER_INTERRUPT",
+    "FILTER_REJECT",
+    "FILTER_SKIP",
+    "FINISHED_STATE",
+    "FIRST_ORDERED_NODE_TYPE",
+    "FLOAT",
+    "FLOAT_MAT2",
+    "FLOAT_MAT3",
+    "FLOAT_MAT4",
+    "FLOAT_VEC2",
+    "FLOAT_VEC3",
+    "FLOAT_VEC4",
+    "FOCUS",
+    "FONT_FACE_RULE",
+    "FONT_FEATURE_VALUES_RULE",
+    "FRAGMENT_SHADER",
+    "FRAGMENT_SHADER_DERIVATIVE_HINT_OES",
+    "FRAMEBUFFER",
+    "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",
+    "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",
+    "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",
+    "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",
+    "FRAMEBUFFER_BINDING",
+    "FRAMEBUFFER_COMPLETE",
+    "FRAMEBUFFER_INCOMPLETE_ATTACHMENT",
+    "FRAMEBUFFER_INCOMPLETE_DIMENSIONS",
+    "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",
+    "FRAMEBUFFER_UNSUPPORTED",
+    "FRONT",
+    "FRONT_AND_BACK",
+    "FRONT_FACE",
+    "FUNC_ADD",
+    "FUNC_REVERSE_SUBTRACT",
+    "FUNC_SUBTRACT",
+    "Feed",
+    "FeedEntry",
+    "File",
+    "FileError",
+    "FileList",
+    "FileReader",
+    "FindInPage",
+    "Float32Array",
+    "Float64Array",
+    "FocusEvent",
+    "FontFace",
+    "FormData",
+    "Function",
+    "GENERATE_MIPMAP_HINT",
+    "GEQUAL",
+    "GREATER",
+    "GREEN_BITS",
+    "GainNode",
+    "Gamepad",
+    "GamepadButton",
+    "GamepadEvent",
+    "GestureEvent",
+    "HAVE_CURRENT_DATA",
+    "HAVE_ENOUGH_DATA",
+    "HAVE_FUTURE_DATA",
+    "HAVE_METADATA",
+    "HAVE_NOTHING",
+    "HEADERS_RECEIVED",
+    "HIDDEN",
+    "HIERARCHY_REQUEST_ERR",
+    "HIGHPASS",
+    "HIGHSHELF",
+    "HIGH_FLOAT",
+    "HIGH_INT",
+    "HORIZONTAL",
+    "HORIZONTAL_AXIS",
+    "HRTF",
+    "HTMLAllCollection",
+    "HTMLAnchorElement",
+    "HTMLAppletElement",
+    "HTMLAreaElement",
+    "HTMLAudioElement",
+    "HTMLBRElement",
+    "HTMLBaseElement",
+    "HTMLBaseFontElement",
+    "HTMLBlockquoteElement",
+    "HTMLBodyElement",
+    "HTMLButtonElement",
+    "HTMLCanvasElement",
+    "HTMLCollection",
+    "HTMLCommandElement",
+    "HTMLContentElement",
+    "HTMLDListElement",
+    "HTMLDataElement",
+    "HTMLDataListElement",
+    "HTMLDetailsElement",
+    "HTMLDialogElement",
+    "HTMLDirectoryElement",
+    "HTMLDivElement",
+    "HTMLDocument",
+    "HTMLElement",
+    "HTMLEmbedElement",
+    "HTMLFieldSetElement",
+    "HTMLFontElement",
+    "HTMLFormControlsCollection",
+    "HTMLFormElement",
+    "HTMLFrameElement",
+    "HTMLFrameSetElement",
+    "HTMLHRElement",
+    "HTMLHeadElement",
+    "HTMLHeadingElement",
+    "HTMLHtmlElement",
+    "HTMLIFrameElement",
+    "HTMLImageElement",
+    "HTMLInputElement",
+    "HTMLIsIndexElement",
+    "HTMLKeygenElement",
+    "HTMLLIElement",
+    "HTMLLabelElement",
+    "HTMLLegendElement",
+    "HTMLLinkElement",
+    "HTMLMapElement",
+    "HTMLMarqueeElement",
+    "HTMLMediaElement",
+    "HTMLMenuElement",
+    "HTMLMenuItemElement",
+    "HTMLMetaElement",
+    "HTMLMeterElement",
+    "HTMLModElement",
+    "HTMLOListElement",
+    "HTMLObjectElement",
+    "HTMLOptGroupElement",
+    "HTMLOptionElement",
+    "HTMLOptionsCollection",
+    "HTMLOutputElement",
+    "HTMLParagraphElement",
+    "HTMLParamElement",
+    "HTMLPictureElement",
+    "HTMLPreElement",
+    "HTMLProgressElement",
+    "HTMLPropertiesCollection",
+    "HTMLQuoteElement",
+    "HTMLScriptElement",
+    "HTMLSelectElement",
+    "HTMLShadowElement",
+    "HTMLSourceElement",
+    "HTMLSpanElement",
+    "HTMLStyleElement",
+    "HTMLTableCaptionElement",
+    "HTMLTableCellElement",
+    "HTMLTableColElement",
+    "HTMLTableElement",
+    "HTMLTableRowElement",
+    "HTMLTableSectionElement",
+    "HTMLTemplateElement",
+    "HTMLTextAreaElement",
+    "HTMLTimeElement",
+    "HTMLTitleElement",
+    "HTMLTrackElement",
+    "HTMLUListElement",
+    "HTMLUnknownElement",
+    "HTMLVideoElement",
+    "HashChangeEvent",
+    "Headers",
+    "History",
+    "ICE_CHECKING",
+    "ICE_CLOSED",
+    "ICE_COMPLETED",
+    "ICE_CONNECTED",
+    "ICE_FAILED",
+    "ICE_GATHERING",
+    "ICE_WAITING",
+    "IDBCursor",
+    "IDBCursorWithValue",
+    "IDBDatabase",
+    "IDBDatabaseException",
+    "IDBFactory",
+    "IDBFileHandle",
+    "IDBFileRequest",
+    "IDBIndex",
+    "IDBKeyRange",
+    "IDBMutableFile",
+    "IDBObjectStore",
+    "IDBOpenDBRequest",
+    "IDBRequest",
+    "IDBTransaction",
+    "IDBVersionChangeEvent",
+    "IDLE",
+    "IMPLEMENTATION_COLOR_READ_FORMAT",
+    "IMPLEMENTATION_COLOR_READ_TYPE",
+    "IMPORT_RULE",
+    "INCR",
+    "INCR_WRAP",
+    "INDEX_SIZE_ERR",
+    "INT",
+    "INT_VEC2",
+    "INT_VEC3",
+    "INT_VEC4",
+    "INUSE_ATTRIBUTE_ERR",
+    "INVALID_ACCESS_ERR",
+    "INVALID_CHARACTER_ERR",
+    "INVALID_ENUM",
+    "INVALID_EXPRESSION_ERR",
+    "INVALID_FRAMEBUFFER_OPERATION",
+    "INVALID_MODIFICATION_ERR",
+    "INVALID_NODE_TYPE_ERR",
+    "INVALID_OPERATION",
+    "INVALID_STATE_ERR",
+    "INVALID_VALUE",
+    "INVERSE_DISTANCE",
+    "INVERT",
+    "IceCandidate",
+    "Image",
+    "ImageBitmap",
+    "ImageData",
+    "Infinity",
+    "InputEvent",
+    "InputMethodContext",
+    "InstallTrigger",
+    "Int16Array",
+    "Int32Array",
+    "Int8Array",
+    "Intent",
+    "InternalError",
+    "Intl",
+    "IsSearchProviderInstalled",
+    "Iterator",
+    "JSON",
+    "KEEP",
+    "KEYDOWN",
+    "KEYFRAMES_RULE",
+    "KEYFRAME_RULE",
+    "KEYPRESS",
+    "KEYUP",
+    "KeyEvent",
+    "KeyboardEvent",
+    "LENGTHADJUST_SPACING",
+    "LENGTHADJUST_SPACINGANDGLYPHS",
+    "LENGTHADJUST_UNKNOWN",
+    "LEQUAL",
+    "LESS",
+    "LINEAR",
+    "LINEAR_DISTANCE",
+    "LINEAR_MIPMAP_LINEAR",
+    "LINEAR_MIPMAP_NEAREST",
+    "LINES",
+    "LINE_LOOP",
+    "LINE_STRIP",
+    "LINE_WIDTH",
+    "LINK_STATUS",
+    "LIVE",
+    "LN10",
+    "LN2",
+    "LOADED",
+    "LOADING",
+    "LOG10E",
+    "LOG2E",
+    "LOWPASS",
+    "LOWSHELF",
+    "LOW_FLOAT",
+    "LOW_INT",
+    "LSException",
+    "LSParserFilter",
+    "LUMINANCE",
+    "LUMINANCE_ALPHA",
+    "LocalMediaStream",
+    "Location",
+    "MAX_COMBINED_TEXTURE_IMAGE_UNITS",
+    "MAX_CUBE_MAP_TEXTURE_SIZE",
+    "MAX_FRAGMENT_UNIFORM_VECTORS",
+    "MAX_RENDERBUFFER_SIZE",
+    "MAX_SAFE_INTEGER",
+    "MAX_TEXTURE_IMAGE_UNITS",
+    "MAX_TEXTURE_MAX_ANISOTROPY_EXT",
+    "MAX_TEXTURE_SIZE",
+    "MAX_VALUE",
+    "MAX_VARYING_VECTORS",
+    "MAX_VERTEX_ATTRIBS",
+    "MAX_VERTEX_TEXTURE_IMAGE_UNITS",
+    "MAX_VERTEX_UNIFORM_VECTORS",
+    "MAX_VIEWPORT_DIMS",
+    "MEDIA_ERR_ABORTED",
+    "MEDIA_ERR_DECODE",
+    "MEDIA_ERR_ENCRYPTED",
+    "MEDIA_ERR_NETWORK",
+    "MEDIA_ERR_SRC_NOT_SUPPORTED",
+    "MEDIA_KEYERR_CLIENT",
+    "MEDIA_KEYERR_DOMAIN",
+    "MEDIA_KEYERR_HARDWARECHANGE",
+    "MEDIA_KEYERR_OUTPUT",
+    "MEDIA_KEYERR_SERVICE",
+    "MEDIA_KEYERR_UNKNOWN",
+    "MEDIA_RULE",
+    "MEDIUM_FLOAT",
+    "MEDIUM_INT",
+    "META_MASK",
+    "MIN_SAFE_INTEGER",
+    "MIN_VALUE",
+    "MIRRORED_REPEAT",
+    "MODE_ASYNCHRONOUS",
+    "MODE_SYNCHRONOUS",
+    "MODIFICATION",
+    "MOUSEDOWN",
+    "MOUSEDRAG",
+    "MOUSEMOVE",
+    "MOUSEOUT",
+    "MOUSEOVER",
+    "MOUSEUP",
+    "MOZ_KEYFRAMES_RULE",
+    "MOZ_KEYFRAME_RULE",
+    "MOZ_SOURCE_CURSOR",
+    "MOZ_SOURCE_ERASER",
+    "MOZ_SOURCE_KEYBOARD",
+    "MOZ_SOURCE_MOUSE",
+    "MOZ_SOURCE_PEN",
+    "MOZ_SOURCE_TOUCH",
+    "MOZ_SOURCE_UNKNOWN",
+    "MSGESTURE_FLAG_BEGIN",
+    "MSGESTURE_FLAG_CANCEL",
+    "MSGESTURE_FLAG_END",
+    "MSGESTURE_FLAG_INERTIA",
+    "MSGESTURE_FLAG_NONE",
+    "MSPOINTER_TYPE_MOUSE",
+    "MSPOINTER_TYPE_PEN",
+    "MSPOINTER_TYPE_TOUCH",
+    "MS_ASYNC_CALLBACK_STATUS_ASSIGN_DELEGATE",
+    "MS_ASYNC_CALLBACK_STATUS_CANCEL",
+    "MS_ASYNC_CALLBACK_STATUS_CHOOSEANY",
+    "MS_ASYNC_CALLBACK_STATUS_ERROR",
+    "MS_ASYNC_CALLBACK_STATUS_JOIN",
+    "MS_ASYNC_OP_STATUS_CANCELED",
+    "MS_ASYNC_OP_STATUS_ERROR",
+    "MS_ASYNC_OP_STATUS_SUCCESS",
+    "MS_MANIPULATION_STATE_ACTIVE",
+    "MS_MANIPULATION_STATE_CANCELLED",
+    "MS_MANIPULATION_STATE_COMMITTED",
+    "MS_MANIPULATION_STATE_DRAGGING",
+    "MS_MANIPULATION_STATE_INERTIA",
+    "MS_MANIPULATION_STATE_PRESELECT",
+    "MS_MANIPULATION_STATE_SELECTING",
+    "MS_MANIPULATION_STATE_STOPPED",
+    "MS_MEDIA_ERR_ENCRYPTED",
+    "MS_MEDIA_KEYERR_CLIENT",
+    "MS_MEDIA_KEYERR_DOMAIN",
+    "MS_MEDIA_KEYERR_HARDWARECHANGE",
+    "MS_MEDIA_KEYERR_OUTPUT",
+    "MS_MEDIA_KEYERR_SERVICE",
+    "MS_MEDIA_KEYERR_UNKNOWN",
+    "Map",
+    "Math",
+    "MediaController",
+    "MediaDevices",
+    "MediaElementAudioSourceNode",
+    "MediaEncryptedEvent",
+    "MediaError",
+    "MediaKeyError",
+    "MediaKeyEvent",
+    "MediaKeyMessageEvent",
+    "MediaKeyNeededEvent",
+    "MediaKeySession",
+    "MediaKeyStatusMap",
+    "MediaKeySystemAccess",
+    "MediaKeys",
+    "MediaList",
+    "MediaQueryList",
+    "MediaQueryListEvent",
+    "MediaRecorder",
+    "MediaSource",
+    "MediaStream",
+    "MediaStreamAudioDestinationNode",
+    "MediaStreamAudioSourceNode",
+    "MediaStreamEvent",
+    "MediaStreamTrack",
+    "MediaStreamTrackEvent",
+    "MessageChannel",
+    "MessageEvent",
+    "MessagePort",
+    "Methods",
+    "MimeType",
+    "MimeTypeArray",
+    "MouseEvent",
+    "MouseScrollEvent",
+    "MozAnimation",
+    "MozAnimationDelay",
+    "MozAnimationDirection",
+    "MozAnimationDuration",
+    "MozAnimationFillMode",
+    "MozAnimationIterationCount",
+    "MozAnimationName",
+    "MozAnimationPlayState",
+    "MozAnimationTimingFunction",
+    "MozAppearance",
+    "MozBackfaceVisibility",
+    "MozBinding",
+    "MozBorderBottomColors",
+    "MozBorderEnd",
+    "MozBorderEndColor",
+    "MozBorderEndStyle",
+    "MozBorderEndWidth",
+    "MozBorderImage",
+    "MozBorderLeftColors",
+    "MozBorderRightColors",
+    "MozBorderStart",
+    "MozBorderStartColor",
+    "MozBorderStartStyle",
+    "MozBorderStartWidth",
+    "MozBorderTopColors",
+    "MozBoxAlign",
+    "MozBoxDirection",
+    "MozBoxFlex",
+    "MozBoxOrdinalGroup",
+    "MozBoxOrient",
+    "MozBoxPack",
+    "MozBoxSizing",
+    "MozCSSKeyframeRule",
+    "MozCSSKeyframesRule",
+    "MozColumnCount",
+    "MozColumnFill",
+    "MozColumnGap",
+    "MozColumnRule",
+    "MozColumnRuleColor",
+    "MozColumnRuleStyle",
+    "MozColumnRuleWidth",
+    "MozColumnWidth",
+    "MozColumns",
+    "MozContactChangeEvent",
+    "MozFloatEdge",
+    "MozFontFeatureSettings",
+    "MozFontLanguageOverride",
+    "MozForceBrokenImageIcon",
+    "MozHyphens",
+    "MozImageRegion",
+    "MozMarginEnd",
+    "MozMarginStart",
+    "MozMmsEvent",
+    "MozMmsMessage",
+    "MozMobileMessageThread",
+    "MozOSXFontSmoothing",
+    "MozOrient",
+    "MozOutlineRadius",
+    "MozOutlineRadiusBottomleft",
+    "MozOutlineRadiusBottomright",
+    "MozOutlineRadiusTopleft",
+    "MozOutlineRadiusTopright",
+    "MozPaddingEnd",
+    "MozPaddingStart",
+    "MozPerspective",
+    "MozPerspectiveOrigin",
+    "MozPowerManager",
+    "MozSettingsEvent",
+    "MozSmsEvent",
+    "MozSmsMessage",
+    "MozStackSizing",
+    "MozTabSize",
+    "MozTextAlignLast",
+    "MozTextDecorationColor",
+    "MozTextDecorationLine",
+    "MozTextDecorationStyle",
+    "MozTextSizeAdjust",
+    "MozTransform",
+    "MozTransformOrigin",
+    "MozTransformStyle",
+    "MozTransition",
+    "MozTransitionDelay",
+    "MozTransitionDuration",
+    "MozTransitionProperty",
+    "MozTransitionTimingFunction",
+    "MozUserFocus",
+    "MozUserInput",
+    "MozUserModify",
+    "MozUserSelect",
+    "MozWindowDragging",
+    "MozWindowShadow",
+    "MutationEvent",
+    "MutationObserver",
+    "MutationRecord",
+    "NAMESPACE_ERR",
+    "NAMESPACE_RULE",
+    "NEAREST",
+    "NEAREST_MIPMAP_LINEAR",
+    "NEAREST_MIPMAP_NEAREST",
+    "NEGATIVE_INFINITY",
+    "NETWORK_EMPTY",
+    "NETWORK_ERR",
+    "NETWORK_IDLE",
+    "NETWORK_LOADED",
+    "NETWORK_LOADING",
+    "NETWORK_NO_SOURCE",
+    "NEVER",
+    "NEW",
+    "NEXT",
+    "NEXT_NO_DUPLICATE",
+    "NICEST",
+    "NODE_AFTER",
+    "NODE_BEFORE",
+    "NODE_BEFORE_AND_AFTER",
+    "NODE_INSIDE",
+    "NONE",
+    "NON_TRANSIENT_ERR",
+    "NOTATION_NODE",
+    "NOTCH",
+    "NOTEQUAL",
+    "NOT_ALLOWED_ERR",
+    "NOT_FOUND_ERR",
+    "NOT_READABLE_ERR",
+    "NOT_SUPPORTED_ERR",
+    "NO_DATA_ALLOWED_ERR",
+    "NO_ERR",
+    "NO_ERROR",
+    "NO_MODIFICATION_ALLOWED_ERR",
+    "NUMBER_TYPE",
+    "NUM_COMPRESSED_TEXTURE_FORMATS",
+    "NaN",
+    "NamedNodeMap",
+    "Navigator",
+    "NearbyLinks",
+    "NetworkInformation",
+    "Node",
+    "NodeFilter",
+    "NodeIterator",
+    "NodeList",
+    "Notation",
+    "Notification",
+    "NotifyPaintEvent",
+    "Number",
+    "NumberFormat",
+    "OBSOLETE",
+    "ONE",
+    "ONE_MINUS_CONSTANT_ALPHA",
+    "ONE_MINUS_CONSTANT_COLOR",
+    "ONE_MINUS_DST_ALPHA",
+    "ONE_MINUS_DST_COLOR",
+    "ONE_MINUS_SRC_ALPHA",
+    "ONE_MINUS_SRC_COLOR",
+    "OPEN",
+    "OPENED",
+    "OPENING",
+    "ORDERED_NODE_ITERATOR_TYPE",
+    "ORDERED_NODE_SNAPSHOT_TYPE",
+    "OUT_OF_MEMORY",
+    "Object",
+    "OfflineAudioCompletionEvent",
+    "OfflineAudioContext",
+    "OfflineResourceList",
+    "Option",
+    "OscillatorNode",
+    "OverflowEvent",
+    "PACK_ALIGNMENT",
+    "PAGE_RULE",
+    "PARSE_ERR",
+    "PATHSEG_ARC_ABS",
+    "PATHSEG_ARC_REL",
+    "PATHSEG_CLOSEPATH",
+    "PATHSEG_CURVETO_CUBIC_ABS",
+    "PATHSEG_CURVETO_CUBIC_REL",
+    "PATHSEG_CURVETO_CUBIC_SMOOTH_ABS",
+    "PATHSEG_CURVETO_CUBIC_SMOOTH_REL",
+    "PATHSEG_CURVETO_QUADRATIC_ABS",
+    "PATHSEG_CURVETO_QUADRATIC_REL",
+    "PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS",
+    "PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL",
+    "PATHSEG_LINETO_ABS",
+    "PATHSEG_LINETO_HORIZONTAL_ABS",
+    "PATHSEG_LINETO_HORIZONTAL_REL",
+    "PATHSEG_LINETO_REL",
+    "PATHSEG_LINETO_VERTICAL_ABS",
+    "PATHSEG_LINETO_VERTICAL_REL",
+    "PATHSEG_MOVETO_ABS",
+    "PATHSEG_MOVETO_REL",
+    "PATHSEG_UNKNOWN",
+    "PATH_EXISTS_ERR",
+    "PEAKING",
+    "PERMISSION_DENIED",
+    "PERSISTENT",
+    "PI",
+    "PLAYING_STATE",
+    "POINTS",
+    "POLYGON_OFFSET_FACTOR",
+    "POLYGON_OFFSET_FILL",
+    "POLYGON_OFFSET_UNITS",
+    "POSITION_UNAVAILABLE",
+    "POSITIVE_INFINITY",
+    "PREV",
+    "PREV_NO_DUPLICATE",
+    "PROCESSING_INSTRUCTION_NODE",
+    "PageChangeEvent",
+    "PageTransitionEvent",
+    "PaintRequest",
+    "PaintRequestList",
+    "PannerNode",
+    "Path2D",
+    "Performance",
+    "PerformanceEntry",
+    "PerformanceMark",
+    "PerformanceMeasure",
+    "PerformanceNavigation",
+    "PerformanceResourceTiming",
+    "PerformanceTiming",
+    "PeriodicWave",
+    "Plugin",
+    "PluginArray",
+    "PopStateEvent",
+    "PopupBlockedEvent",
+    "ProcessingInstruction",
+    "ProgressEvent",
+    "Promise",
+    "PropertyNodeList",
+    "Proxy",
+    "PushManager",
+    "PushSubscription",
+    "Q",
+    "QUOTA_ERR",
+    "QUOTA_EXCEEDED_ERR",
+    "QueryInterface",
+    "READ_ONLY",
+    "READ_ONLY_ERR",
+    "READ_WRITE",
+    "RED_BITS",
+    "REMOVAL",
+    "RENDERBUFFER",
+    "RENDERBUFFER_ALPHA_SIZE",
+    "RENDERBUFFER_BINDING",
+    "RENDERBUFFER_BLUE_SIZE",
+    "RENDERBUFFER_DEPTH_SIZE",
+    "RENDERBUFFER_GREEN_SIZE",
+    "RENDERBUFFER_HEIGHT",
+    "RENDERBUFFER_INTERNAL_FORMAT",
+    "RENDERBUFFER_RED_SIZE",
+    "RENDERBUFFER_STENCIL_SIZE",
+    "RENDERBUFFER_WIDTH",
+    "RENDERER",
+    "RENDERING_INTENT_ABSOLUTE_COLORIMETRIC",
+    "RENDERING_INTENT_AUTO",
+    "RENDERING_INTENT_PERCEPTUAL",
+    "RENDERING_INTENT_RELATIVE_COLORIMETRIC",
+    "RENDERING_INTENT_SATURATION",
+    "RENDERING_INTENT_UNKNOWN",
+    "REPEAT",
+    "REPLACE",
+    "RGB",
+    "RGB565",
+    "RGB5_A1",
+    "RGBA",
+    "RGBA4",
+    "RGBColor",
+    "ROTATION_CLOCKWISE",
+    "ROTATION_COUNTERCLOCKWISE",
+    "RTCDataChannelEvent",
+    "RTCIceCandidate",
+    "RTCPeerConnectionIceEvent",
+    "RTCRtpReceiver",
+    "RTCRtpSender",
+    "RTCSessionDescription",
+    "RTCStatsReport",
+    "RadioNodeList",
+    "Range",
+    "RangeError",
+    "RangeException",
+    "RecordErrorEvent",
+    "Rect",
+    "ReferenceError",
+    "RegExp",
+    "Request",
+    "Response",
+    "SAMPLER_2D",
+    "SAMPLER_CUBE",
+    "SAMPLES",
+    "SAMPLE_ALPHA_TO_COVERAGE",
+    "SAMPLE_BUFFERS",
+    "SAMPLE_COVERAGE",
+    "SAMPLE_COVERAGE_INVERT",
+    "SAMPLE_COVERAGE_VALUE",
+    "SAWTOOTH",
+    "SCHEDULED_STATE",
+    "SCISSOR_BOX",
+    "SCISSOR_TEST",
+    "SCROLL_PAGE_DOWN",
+    "SCROLL_PAGE_UP",
+    "SDP_ANSWER",
+    "SDP_OFFER",
+    "SDP_PRANSWER",
+    "SECURITY_ERR",
+    "SELECT",
+    "SERIALIZE_ERR",
+    "SEVERITY_ERROR",
+    "SEVERITY_FATAL_ERROR",
+    "SEVERITY_WARNING",
+    "SHADER_COMPILER",
+    "SHADER_TYPE",
+    "SHADING_LANGUAGE_VERSION",
+    "SHIFT_MASK",
+    "SHORT",
+    "SHOWING",
+    "SHOW_ALL",
+    "SHOW_ATTRIBUTE",
+    "SHOW_CDATA_SECTION",
+    "SHOW_COMMENT",
+    "SHOW_DOCUMENT",
+    "SHOW_DOCUMENT_FRAGMENT",
+    "SHOW_DOCUMENT_TYPE",
+    "SHOW_ELEMENT",
+    "SHOW_ENTITY",
+    "SHOW_ENTITY_REFERENCE",
+    "SHOW_NOTATION",
+    "SHOW_PROCESSING_INSTRUCTION",
+    "SHOW_TEXT",
+    "SINE",
+    "SOUNDFIELD",
+    "SQLException",
+    "SQRT1_2",
+    "SQRT2",
+    "SQUARE",
+    "SRC_ALPHA",
+    "SRC_ALPHA_SATURATE",
+    "SRC_COLOR",
+    "START_TO_END",
+    "START_TO_START",
+    "STATIC_DRAW",
+    "STENCIL_ATTACHMENT",
+    "STENCIL_BACK_FAIL",
+    "STENCIL_BACK_FUNC",
+    "STENCIL_BACK_PASS_DEPTH_FAIL",
+    "STENCIL_BACK_PASS_DEPTH_PASS",
+    "STENCIL_BACK_REF",
+    "STENCIL_BACK_VALUE_MASK",
+    "STENCIL_BACK_WRITEMASK",
+    "STENCIL_BITS",
+    "STENCIL_BUFFER_BIT",
+    "STENCIL_CLEAR_VALUE",
+    "STENCIL_FAIL",
+    "STENCIL_FUNC",
+    "STENCIL_INDEX",
+    "STENCIL_INDEX8",
+    "STENCIL_PASS_DEPTH_FAIL",
+    "STENCIL_PASS_DEPTH_PASS",
+    "STENCIL_REF",
+    "STENCIL_TEST",
+    "STENCIL_VALUE_MASK",
+    "STENCIL_WRITEMASK",
+    "STREAM_DRAW",
+    "STRING_TYPE",
+    "STYLE_RULE",
+    "SUBPIXEL_BITS",
+    "SUPPORTS_RULE",
+    "SVGAElement",
+    "SVGAltGlyphDefElement",
+    "SVGAltGlyphElement",
+    "SVGAltGlyphItemElement",
+    "SVGAngle",
+    "SVGAnimateColorElement",
+    "SVGAnimateElement",
+    "SVGAnimateMotionElement",
+    "SVGAnimateTransformElement",
+    "SVGAnimatedAngle",
+    "SVGAnimatedBoolean",
+    "SVGAnimatedEnumeration",
+    "SVGAnimatedInteger",
+    "SVGAnimatedLength",
+    "SVGAnimatedLengthList",
+    "SVGAnimatedNumber",
+    "SVGAnimatedNumberList",
+    "SVGAnimatedPreserveAspectRatio",
+    "SVGAnimatedRect",
+    "SVGAnimatedString",
+    "SVGAnimatedTransformList",
+    "SVGAnimationElement",
+    "SVGCircleElement",
+    "SVGClipPathElement",
+    "SVGColor",
+    "SVGComponentTransferFunctionElement",
+    "SVGCursorElement",
+    "SVGDefsElement",
+    "SVGDescElement",
+    "SVGDiscardElement",
+    "SVGDocument",
+    "SVGElement",
+    "SVGElementInstance",
+    "SVGElementInstanceList",
+    "SVGEllipseElement",
+    "SVGException",
+    "SVGFEBlendElement",
+    "SVGFEColorMatrixElement",
+    "SVGFEComponentTransferElement",
+    "SVGFECompositeElement",
+    "SVGFEConvolveMatrixElement",
+    "SVGFEDiffuseLightingElement",
+    "SVGFEDisplacementMapElement",
+    "SVGFEDistantLightElement",
+    "SVGFEDropShadowElement",
+    "SVGFEFloodElement",
+    "SVGFEFuncAElement",
+    "SVGFEFuncBElement",
+    "SVGFEFuncGElement",
+    "SVGFEFuncRElement",
+    "SVGFEGaussianBlurElement",
+    "SVGFEImageElement",
+    "SVGFEMergeElement",
+    "SVGFEMergeNodeElement",
+    "SVGFEMorphologyElement",
+    "SVGFEOffsetElement",
+    "SVGFEPointLightElement",
+    "SVGFESpecularLightingElement",
+    "SVGFESpotLightElement",
+    "SVGFETileElement",
+    "SVGFETurbulenceElement",
+    "SVGFilterElement",
+    "SVGFontElement",
+    "SVGFontFaceElement",
+    "SVGFontFaceFormatElement",
+    "SVGFontFaceNameElement",
+    "SVGFontFaceSrcElement",
+    "SVGFontFaceUriElement",
+    "SVGForeignObjectElement",
+    "SVGGElement",
+    "SVGGeometryElement",
+    "SVGGlyphElement",
+    "SVGGlyphRefElement",
+    "SVGGradientElement",
+    "SVGGraphicsElement",
+    "SVGHKernElement",
+    "SVGImageElement",
+    "SVGLength",
+    "SVGLengthList",
+    "SVGLineElement",
+    "SVGLinearGradientElement",
+    "SVGMPathElement",
+    "SVGMarkerElement",
+    "SVGMaskElement",
+    "SVGMatrix",
+    "SVGMetadataElement",
+    "SVGMissingGlyphElement",
+    "SVGNumber",
+    "SVGNumberList",
+    "SVGPaint",
+    "SVGPathElement",
+    "SVGPathSeg",
+    "SVGPathSegArcAbs",
+    "SVGPathSegArcRel",
+    "SVGPathSegClosePath",
+    "SVGPathSegCurvetoCubicAbs",
+    "SVGPathSegCurvetoCubicRel",
+    "SVGPathSegCurvetoCubicSmoothAbs",
+    "SVGPathSegCurvetoCubicSmoothRel",
+    "SVGPathSegCurvetoQuadraticAbs",
+    "SVGPathSegCurvetoQuadraticRel",
+    "SVGPathSegCurvetoQuadraticSmoothAbs",
+    "SVGPathSegCurvetoQuadraticSmoothRel",
+    "SVGPathSegLinetoAbs",
+    "SVGPathSegLinetoHorizontalAbs",
+    "SVGPathSegLinetoHorizontalRel",
+    "SVGPathSegLinetoRel",
+    "SVGPathSegLinetoVerticalAbs",
+    "SVGPathSegLinetoVerticalRel",
+    "SVGPathSegList",
+    "SVGPathSegMovetoAbs",
+    "SVGPathSegMovetoRel",
+    "SVGPatternElement",
+    "SVGPoint",
+    "SVGPointList",
+    "SVGPolygonElement",
+    "SVGPolylineElement",
+    "SVGPreserveAspectRatio",
+    "SVGRadialGradientElement",
+    "SVGRect",
+    "SVGRectElement",
+    "SVGRenderingIntent",
+    "SVGSVGElement",
+    "SVGScriptElement",
+    "SVGSetElement",
+    "SVGStopElement",
+    "SVGStringList",
+    "SVGStyleElement",
+    "SVGSwitchElement",
+    "SVGSymbolElement",
+    "SVGTRefElement",
+    "SVGTSpanElement",
+    "SVGTextContentElement",
+    "SVGTextElement",
+    "SVGTextPathElement",
+    "SVGTextPositioningElement",
+    "SVGTitleElement",
+    "SVGTransform",
+    "SVGTransformList",
+    "SVGUnitTypes",
+    "SVGUseElement",
+    "SVGVKernElement",
+    "SVGViewElement",
+    "SVGViewSpec",
+    "SVGZoomAndPan",
+    "SVGZoomEvent",
+    "SVG_ANGLETYPE_DEG",
+    "SVG_ANGLETYPE_GRAD",
+    "SVG_ANGLETYPE_RAD",
+    "SVG_ANGLETYPE_UNKNOWN",
+    "SVG_ANGLETYPE_UNSPECIFIED",
+    "SVG_CHANNEL_A",
+    "SVG_CHANNEL_B",
+    "SVG_CHANNEL_G",
+    "SVG_CHANNEL_R",
+    "SVG_CHANNEL_UNKNOWN",
+    "SVG_COLORTYPE_CURRENTCOLOR",
+    "SVG_COLORTYPE_RGBCOLOR",
+    "SVG_COLORTYPE_RGBCOLOR_ICCCOLOR",
+    "SVG_COLORTYPE_UNKNOWN",
+    "SVG_EDGEMODE_DUPLICATE",
+    "SVG_EDGEMODE_NONE",
+    "SVG_EDGEMODE_UNKNOWN",
+    "SVG_EDGEMODE_WRAP",
+    "SVG_FEBLEND_MODE_COLOR",
+    "SVG_FEBLEND_MODE_COLOR_BURN",
+    "SVG_FEBLEND_MODE_COLOR_DODGE",
+    "SVG_FEBLEND_MODE_DARKEN",
+    "SVG_FEBLEND_MODE_DIFFERENCE",
+    "SVG_FEBLEND_MODE_EXCLUSION",
+    "SVG_FEBLEND_MODE_HARD_LIGHT",
+    "SVG_FEBLEND_MODE_HUE",
+    "SVG_FEBLEND_MODE_LIGHTEN",
+    "SVG_FEBLEND_MODE_LUMINOSITY",
+    "SVG_FEBLEND_MODE_MULTIPLY",
+    "SVG_FEBLEND_MODE_NORMAL",
+    "SVG_FEBLEND_MODE_OVERLAY",
+    "SVG_FEBLEND_MODE_SATURATION",
+    "SVG_FEBLEND_MODE_SCREEN",
+    "SVG_FEBLEND_MODE_SOFT_LIGHT",
+    "SVG_FEBLEND_MODE_UNKNOWN",
+    "SVG_FECOLORMATRIX_TYPE_HUEROTATE",
+    "SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA",
+    "SVG_FECOLORMATRIX_TYPE_MATRIX",
+    "SVG_FECOLORMATRIX_TYPE_SATURATE",
+    "SVG_FECOLORMATRIX_TYPE_UNKNOWN",
+    "SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE",
+    "SVG_FECOMPONENTTRANSFER_TYPE_GAMMA",
+    "SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY",
+    "SVG_FECOMPONENTTRANSFER_TYPE_LINEAR",
+    "SVG_FECOMPONENTTRANSFER_TYPE_TABLE",
+    "SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN",
+    "SVG_FECOMPOSITE_OPERATOR_ARITHMETIC",
+    "SVG_FECOMPOSITE_OPERATOR_ATOP",
+    "SVG_FECOMPOSITE_OPERATOR_IN",
+    "SVG_FECOMPOSITE_OPERATOR_OUT",
+    "SVG_FECOMPOSITE_OPERATOR_OVER",
+    "SVG_FECOMPOSITE_OPERATOR_UNKNOWN",
+    "SVG_FECOMPOSITE_OPERATOR_XOR",
+    "SVG_INVALID_VALUE_ERR",
+    "SVG_LENGTHTYPE_CM",
+    "SVG_LENGTHTYPE_EMS",
+    "SVG_LENGTHTYPE_EXS",
+    "SVG_LENGTHTYPE_IN",
+    "SVG_LENGTHTYPE_MM",
+    "SVG_LENGTHTYPE_NUMBER",
+    "SVG_LENGTHTYPE_PC",
+    "SVG_LENGTHTYPE_PERCENTAGE",
+    "SVG_LENGTHTYPE_PT",
+    "SVG_LENGTHTYPE_PX",
+    "SVG_LENGTHTYPE_UNKNOWN",
+    "SVG_MARKERUNITS_STROKEWIDTH",
+    "SVG_MARKERUNITS_UNKNOWN",
+    "SVG_MARKERUNITS_USERSPACEONUSE",
+    "SVG_MARKER_ORIENT_ANGLE",
+    "SVG_MARKER_ORIENT_AUTO",
+    "SVG_MARKER_ORIENT_UNKNOWN",
+    "SVG_MASKTYPE_ALPHA",
+    "SVG_MASKTYPE_LUMINANCE",
+    "SVG_MATRIX_NOT_INVERTABLE",
+    "SVG_MEETORSLICE_MEET",
+    "SVG_MEETORSLICE_SLICE",
+    "SVG_MEETORSLICE_UNKNOWN",
+    "SVG_MORPHOLOGY_OPERATOR_DILATE",
+    "SVG_MORPHOLOGY_OPERATOR_ERODE",
+    "SVG_MORPHOLOGY_OPERATOR_UNKNOWN",
+    "SVG_PAINTTYPE_CURRENTCOLOR",
+    "SVG_PAINTTYPE_NONE",
+    "SVG_PAINTTYPE_RGBCOLOR",
+    "SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR",
+    "SVG_PAINTTYPE_UNKNOWN",
+    "SVG_PAINTTYPE_URI",
+    "SVG_PAINTTYPE_URI_CURRENTCOLOR",
+    "SVG_PAINTTYPE_URI_NONE",
+    "SVG_PAINTTYPE_URI_RGBCOLOR",
+    "SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR",
+    "SVG_PRESERVEASPECTRATIO_NONE",
+    "SVG_PRESERVEASPECTRATIO_UNKNOWN",
+    "SVG_PRESERVEASPECTRATIO_XMAXYMAX",
+    "SVG_PRESERVEASPECTRATIO_XMAXYMID",
+    "SVG_PRESERVEASPECTRATIO_XMAXYMIN",
+    "SVG_PRESERVEASPECTRATIO_XMIDYMAX",
+    "SVG_PRESERVEASPECTRATIO_XMIDYMID",
+    "SVG_PRESERVEASPECTRATIO_XMIDYMIN",
+    "SVG_PRESERVEASPECTRATIO_XMINYMAX",
+    "SVG_PRESERVEASPECTRATIO_XMINYMID",
+    "SVG_PRESERVEASPECTRATIO_XMINYMIN",
+    "SVG_SPREADMETHOD_PAD",
+    "SVG_SPREADMETHOD_REFLECT",
+    "SVG_SPREADMETHOD_REPEAT",
+    "SVG_SPREADMETHOD_UNKNOWN",
+    "SVG_STITCHTYPE_NOSTITCH",
+    "SVG_STITCHTYPE_STITCH",
+    "SVG_STITCHTYPE_UNKNOWN",
+    "SVG_TRANSFORM_MATRIX",
+    "SVG_TRANSFORM_ROTATE",
+    "SVG_TRANSFORM_SCALE",
+    "SVG_TRANSFORM_SKEWX",
+    "SVG_TRANSFORM_SKEWY",
+    "SVG_TRANSFORM_TRANSLATE",
+    "SVG_TRANSFORM_UNKNOWN",
+    "SVG_TURBULENCE_TYPE_FRACTALNOISE",
+    "SVG_TURBULENCE_TYPE_TURBULENCE",
+    "SVG_TURBULENCE_TYPE_UNKNOWN",
+    "SVG_UNIT_TYPE_OBJECTBOUNDINGBOX",
+    "SVG_UNIT_TYPE_UNKNOWN",
+    "SVG_UNIT_TYPE_USERSPACEONUSE",
+    "SVG_WRONG_TYPE_ERR",
+    "SVG_ZOOMANDPAN_DISABLE",
+    "SVG_ZOOMANDPAN_MAGNIFY",
+    "SVG_ZOOMANDPAN_UNKNOWN",
+    "SYNTAX_ERR",
+    "SavedPages",
+    "Screen",
+    "ScreenOrientation",
+    "Script",
+    "ScriptProcessorNode",
+    "ScrollAreaEvent",
+    "SecurityPolicyViolationEvent",
+    "Selection",
+    "ServiceWorker",
+    "ServiceWorkerContainer",
+    "ServiceWorkerRegistration",
+    "SessionDescription",
+    "Set",
+    "ShadowRoot",
+    "SharedWorker",
+    "SimpleGestureEvent",
+    "SpeechSynthesisEvent",
+    "SpeechSynthesisUtterance",
+    "StopIteration",
+    "Storage",
+    "StorageEvent",
+    "String",
+    "StyleSheet",
+    "StyleSheetList",
+    "SubtleCrypto",
+    "Symbol",
+    "SyntaxError",
+    "TEMPORARY",
+    "TEXTPATH_METHODTYPE_ALIGN",
+    "TEXTPATH_METHODTYPE_STRETCH",
+    "TEXTPATH_METHODTYPE_UNKNOWN",
+    "TEXTPATH_SPACINGTYPE_AUTO",
+    "TEXTPATH_SPACINGTYPE_EXACT",
+    "TEXTPATH_SPACINGTYPE_UNKNOWN",
+    "TEXTURE",
+    "TEXTURE0",
+    "TEXTURE1",
+    "TEXTURE10",
+    "TEXTURE11",
+    "TEXTURE12",
+    "TEXTURE13",
+    "TEXTURE14",
+    "TEXTURE15",
+    "TEXTURE16",
+    "TEXTURE17",
+    "TEXTURE18",
+    "TEXTURE19",
+    "TEXTURE2",
+    "TEXTURE20",
+    "TEXTURE21",
+    "TEXTURE22",
+    "TEXTURE23",
+    "TEXTURE24",
+    "TEXTURE25",
+    "TEXTURE26",
+    "TEXTURE27",
+    "TEXTURE28",
+    "TEXTURE29",
+    "TEXTURE3",
+    "TEXTURE30",
+    "TEXTURE31",
+    "TEXTURE4",
+    "TEXTURE5",
+    "TEXTURE6",
+    "TEXTURE7",
+    "TEXTURE8",
+    "TEXTURE9",
+    "TEXTURE_2D",
+    "TEXTURE_BINDING_2D",
+    "TEXTURE_BINDING_CUBE_MAP",
+    "TEXTURE_CUBE_MAP",
+    "TEXTURE_CUBE_MAP_NEGATIVE_X",
+    "TEXTURE_CUBE_MAP_NEGATIVE_Y",
+    "TEXTURE_CUBE_MAP_NEGATIVE_Z",
+    "TEXTURE_CUBE_MAP_POSITIVE_X",
+    "TEXTURE_CUBE_MAP_POSITIVE_Y",
+    "TEXTURE_CUBE_MAP_POSITIVE_Z",
+    "TEXTURE_MAG_FILTER",
+    "TEXTURE_MAX_ANISOTROPY_EXT",
+    "TEXTURE_MIN_FILTER",
+    "TEXTURE_WRAP_S",
+    "TEXTURE_WRAP_T",
+    "TEXT_NODE",
+    "TIMEOUT",
+    "TIMEOUT_ERR",
+    "TOO_LARGE_ERR",
+    "TRANSACTION_INACTIVE_ERR",
+    "TRIANGLE",
+    "TRIANGLES",
+    "TRIANGLE_FAN",
+    "TRIANGLE_STRIP",
+    "TYPE_BACK_FORWARD",
+    "TYPE_ERR",
+    "TYPE_MISMATCH_ERR",
+    "TYPE_NAVIGATE",
+    "TYPE_RELOAD",
+    "TYPE_RESERVED",
+    "Text",
+    "TextDecoder",
+    "TextEncoder",
+    "TextEvent",
+    "TextMetrics",
+    "TextTrack",
+    "TextTrackCue",
+    "TextTrackCueList",
+    "TextTrackList",
+    "TimeEvent",
+    "TimeRanges",
+    "Touch",
+    "TouchEvent",
+    "TouchList",
+    "TrackEvent",
+    "TransitionEvent",
+    "TreeWalker",
+    "TypeError",
+    "UIEvent",
+    "UNCACHED",
+    "UNKNOWN_ERR",
+    "UNKNOWN_RULE",
+    "UNMASKED_RENDERER_WEBGL",
+    "UNMASKED_VENDOR_WEBGL",
+    "UNORDERED_NODE_ITERATOR_TYPE",
+    "UNORDERED_NODE_SNAPSHOT_TYPE",
+    "UNPACK_ALIGNMENT",
+    "UNPACK_COLORSPACE_CONVERSION_WEBGL",
+    "UNPACK_FLIP_Y_WEBGL",
+    "UNPACK_PREMULTIPLY_ALPHA_WEBGL",
+    "UNSCHEDULED_STATE",
+    "UNSENT",
+    "UNSIGNED_BYTE",
+    "UNSIGNED_INT",
+    "UNSIGNED_SHORT",
+    "UNSIGNED_SHORT_4_4_4_4",
+    "UNSIGNED_SHORT_5_5_5_1",
+    "UNSIGNED_SHORT_5_6_5",
+    "UNSPECIFIED_EVENT_TYPE_ERR",
+    "UPDATEREADY",
+    "URIError",
+    "URL",
+    "URLSearchParams",
+    "URLUnencoded",
+    "URL_MISMATCH_ERR",
+    "UTC",
+    "Uint16Array",
+    "Uint32Array",
+    "Uint8Array",
+    "Uint8ClampedArray",
+    "UserMessageHandler",
+    "UserMessageHandlersNamespace",
+    "UserProximityEvent",
+    "VALIDATE_STATUS",
+    "VALIDATION_ERR",
+    "VARIABLES_RULE",
+    "VENDOR",
+    "VERSION",
+    "VERSION_CHANGE",
+    "VERSION_ERR",
+    "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",
+    "VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE",
+    "VERTEX_ATTRIB_ARRAY_ENABLED",
+    "VERTEX_ATTRIB_ARRAY_NORMALIZED",
+    "VERTEX_ATTRIB_ARRAY_POINTER",
+    "VERTEX_ATTRIB_ARRAY_SIZE",
+    "VERTEX_ATTRIB_ARRAY_STRIDE",
+    "VERTEX_ATTRIB_ARRAY_TYPE",
+    "VERTEX_SHADER",
+    "VERTICAL",
+    "VERTICAL_AXIS",
+    "VER_ERR",
+    "VIEWPORT",
+    "VIEWPORT_RULE",
+    "VTTCue",
+    "VTTRegion",
+    "ValidityState",
+    "VideoStreamTrack",
+    "WEBKIT_FILTER_RULE",
+    "WEBKIT_KEYFRAMES_RULE",
+    "WEBKIT_KEYFRAME_RULE",
+    "WEBKIT_REGION_RULE",
+    "WRONG_DOCUMENT_ERR",
+    "WaveShaperNode",
+    "WeakMap",
+    "WeakSet",
+    "WebGLActiveInfo",
+    "WebGLBuffer",
+    "WebGLContextEvent",
+    "WebGLFramebuffer",
+    "WebGLProgram",
+    "WebGLRenderbuffer",
+    "WebGLRenderingContext",
+    "WebGLShader",
+    "WebGLShaderPrecisionFormat",
+    "WebGLTexture",
+    "WebGLUniformLocation",
+    "WebGLVertexArray",
+    "WebKitAnimationEvent",
+    "WebKitBlobBuilder",
+    "WebKitCSSFilterRule",
+    "WebKitCSSFilterValue",
+    "WebKitCSSKeyframeRule",
+    "WebKitCSSKeyframesRule",
+    "WebKitCSSMatrix",
+    "WebKitCSSRegionRule",
+    "WebKitCSSTransformValue",
+    "WebKitDataCue",
+    "WebKitGamepad",
+    "WebKitMediaKeyError",
+    "WebKitMediaKeyMessageEvent",
+    "WebKitMediaKeySession",
+    "WebKitMediaKeys",
+    "WebKitMediaSource",
+    "WebKitMutationObserver",
+    "WebKitNamespace",
+    "WebKitPlaybackTargetAvailabilityEvent",
+    "WebKitPoint",
+    "WebKitShadowRoot",
+    "WebKitSourceBuffer",
+    "WebKitSourceBufferList",
+    "WebKitTransitionEvent",
+    "WebSocket",
+    "WheelEvent",
+    "Window",
+    "Worker",
+    "XMLDocument",
+    "XMLHttpRequest",
+    "XMLHttpRequestEventTarget",
+    "XMLHttpRequestException",
+    "XMLHttpRequestProgressEvent",
+    "XMLHttpRequestUpload",
+    "XMLSerializer",
+    "XMLStylesheetProcessingInstruction",
+    "XPathEvaluator",
+    "XPathException",
+    "XPathExpression",
+    "XPathNSResolver",
+    "XPathResult",
+    "XSLTProcessor",
+    "ZERO",
+    "_XD0M_",
+    "_YD0M_",
+    "__defineGetter__",
+    "__defineSetter__",
+    "__lookupGetter__",
+    "__lookupSetter__",
+    "__opera",
+    "__proto__",
+    "_browserjsran",
+    "a",
+    "aLink",
+    "abbr",
+    "abort",
+    "abs",
+    "absolute",
+    "acceleration",
+    "accelerationIncludingGravity",
+    "accelerator",
+    "accept",
+    "acceptCharset",
+    "acceptNode",
+    "accessKey",
+    "accessKeyLabel",
+    "accuracy",
+    "acos",
+    "acosh",
+    "action",
+    "actionURL",
+    "active",
+    "activeCues",
+    "activeElement",
+    "activeSourceBuffers",
+    "activeSourceCount",
+    "activeTexture",
+    "add",
+    "addBehavior",
+    "addCandidate",
+    "addColorStop",
+    "addCue",
+    "addElement",
+    "addEventListener",
+    "addFilter",
+    "addFromString",
+    "addFromUri",
+    "addIceCandidate",
+    "addImport",
+    "addListener",
+    "addNamed",
+    "addPageRule",
+    "addPath",
+    "addPointer",
+    "addRange",
+    "addRegion",
+    "addRule",
+    "addSearchEngine",
+    "addSourceBuffer",
+    "addStream",
+    "addTextTrack",
+    "addTrack",
+    "addWakeLockListener",
+    "addedNodes",
+    "additionalName",
+    "additiveSymbols",
+    "addons",
+    "adoptNode",
+    "adr",
+    "advance",
+    "alert",
+    "algorithm",
+    "align",
+    "align-content",
+    "align-items",
+    "align-self",
+    "alignContent",
+    "alignItems",
+    "alignSelf",
+    "alignmentBaseline",
+    "alinkColor",
+    "all",
+    "allSettled",
+    "allowFullscreen",
+    "allowedDirections",
+    "alpha",
+    "alt",
+    "altGraphKey",
+    "altHtml",
+    "altKey",
+    "altLeft",
+    "altitude",
+    "altitudeAccuracy",
+    "amplitude",
+    "ancestorOrigins",
+    "anchor",
+    "anchorNode",
+    "anchorOffset",
+    "anchors",
+    "angle",
+    "animVal",
+    "animate",
+    "animatedInstanceRoot",
+    "animatedNormalizedPathSegList",
+    "animatedPathSegList",
+    "animatedPoints",
+    "animation",
+    "animation-delay",
+    "animation-direction",
+    "animation-duration",
+    "animation-fill-mode",
+    "animation-iteration-count",
+    "animation-name",
+    "animation-play-state",
+    "animation-timing-function",
+    "animationDelay",
+    "animationDirection",
+    "animationDuration",
+    "animationFillMode",
+    "animationIterationCount",
+    "animationName",
+    "animationPlayState",
+    "animationStartTime",
+    "animationTimingFunction",
+    "animationsPaused",
+    "anniversary",
+    "any",
+    "app",
+    "appCodeName",
+    "appMinorVersion",
+    "appName",
+    "appNotifications",
+    "appVersion",
+    "append",
+    "appendBuffer",
+    "appendChild",
+    "appendData",
+    "appendItem",
+    "appendMedium",
+    "appendNamed",
+    "appendRule",
+    "appendStream",
+    "appendWindowEnd",
+    "appendWindowStart",
+    "applets",
+    "applicationCache",
+    "apply",
+    "applyElement",
+    "arc",
+    "arcTo",
+    "archive",
+    "areas",
+    "arguments",
+    "arrayBuffer",
+    "asin",
+    "asinh",
+    "assert",
+    "assign",
+    "async",
+    "atEnd",
+    "atan",
+    "atan2",
+    "atanh",
+    "atob",
+    "attachEvent",
+    "attachShader",
+    "attachShadow",
+    "attachments",
+    "attack",
+    "attrChange",
+    "attrName",
+    "attributeFilter",
+    "attributeName",
+    "attributeNamespace",
+    "attributeOldValue",
+    "attributes",
+    "audioTracks",
+    "autoIncrement",
+    "autobuffer",
+    "autocapitalize",
+    "autocomplete",
+    "autocorrect",
+    "autofocus",
+    "autoplay",
+    "availHeight",
+    "availLeft",
+    "availTop",
+    "availWidth",
+    "availability",
+    "available",
+    "aversion",
+    "axes",
+    "axis",
+    "azimuth",
+    "b",
+    "back",
+    "backface-visibility",
+    "backfaceVisibility",
+    "background",
+    "background-attachment",
+    "background-blend-mode",
+    "background-clip",
+    "background-color",
+    "background-image",
+    "background-origin",
+    "background-position",
+    "background-repeat",
+    "background-size",
+    "backgroundAttachment",
+    "backgroundBlendMode",
+    "backgroundClip",
+    "backgroundColor",
+    "backgroundImage",
+    "backgroundOrigin",
+    "backgroundPosition",
+    "backgroundPositionX",
+    "backgroundPositionY",
+    "backgroundRepeat",
+    "backgroundSize",
+    "badInput",
+    "balance",
+    "baseFrequencyX",
+    "baseFrequencyY",
+    "baseNode",
+    "baseOffset",
+    "baseURI",
+    "baseVal",
+    "baselineShift",
+    "battery",
+    "bday",
+    "beginElement",
+    "beginElementAt",
+    "beginPath",
+    "behavior",
+    "behaviorCookie",
+    "behaviorPart",
+    "behaviorUrns",
+    "beta",
+    "bezierCurveTo",
+    "bgColor",
+    "bgProperties",
+    "bias",
+    "big",
+    "binaryType",
+    "bind",
+    "bindAttribLocation",
+    "bindBuffer",
+    "bindFramebuffer",
+    "bindRenderbuffer",
+    "bindTexture",
+    "blendColor",
+    "blendEquation",
+    "blendEquationSeparate",
+    "blendFunc",
+    "blendFuncSeparate",
+    "blink",
+    "blob",
+    "blockDirection",
+    "blue",
+    "blur",
+    "body",
+    "bodyUsed",
+    "bold",
+    "bookmarks",
+    "booleanValue",
+    "border",
+    "border-bottom",
+    "border-bottom-color",
+    "border-bottom-left-radius",
+    "border-bottom-right-radius",
+    "border-bottom-style",
+    "border-bottom-width",
+    "border-collapse",
+    "border-color",
+    "border-image",
+    "border-image-outset",
+    "border-image-repeat",
+    "border-image-slice",
+    "border-image-source",
+    "border-image-width",
+    "border-left",
+    "border-left-color",
+    "border-left-style",
+    "border-left-width",
+    "border-radius",
+    "border-right",
+    "border-right-color",
+    "border-right-style",
+    "border-right-width",
+    "border-spacing",
+    "border-style",
+    "border-top",
+    "border-top-color",
+    "border-top-left-radius",
+    "border-top-right-radius",
+    "border-top-style",
+    "border-top-width",
+    "border-width",
+    "borderBottom",
+    "borderBottomColor",
+    "borderBottomLeftRadius",
+    "borderBottomRightRadius",
+    "borderBottomStyle",
+    "borderBottomWidth",
+    "borderCollapse",
+    "borderColor",
+    "borderColorDark",
+    "borderColorLight",
+    "borderImage",
+    "borderImageOutset",
+    "borderImageRepeat",
+    "borderImageSlice",
+    "borderImageSource",
+    "borderImageWidth",
+    "borderLeft",
+    "borderLeftColor",
+    "borderLeftStyle",
+    "borderLeftWidth",
+    "borderRadius",
+    "borderRight",
+    "borderRightColor",
+    "borderRightStyle",
+    "borderRightWidth",
+    "borderSpacing",
+    "borderStyle",
+    "borderTop",
+    "borderTopColor",
+    "borderTopLeftRadius",
+    "borderTopRightRadius",
+    "borderTopStyle",
+    "borderTopWidth",
+    "borderWidth",
+    "bottom",
+    "bottomMargin",
+    "bound",
+    "boundElements",
+    "boundingClientRect",
+    "boundingHeight",
+    "boundingLeft",
+    "boundingTop",
+    "boundingWidth",
+    "bounds",
+    "box-decoration-break",
+    "box-shadow",
+    "box-sizing",
+    "boxDecorationBreak",
+    "boxShadow",
+    "boxSizing",
+    "breakAfter",
+    "breakBefore",
+    "breakInside",
+    "browserLanguage",
+    "btoa",
+    "bubbles",
+    "buffer",
+    "bufferData",
+    "bufferDepth",
+    "bufferSize",
+    "bufferSubData",
+    "buffered",
+    "bufferedAmount",
+    "buildID",
+    "buildNumber",
+    "button",
+    "buttonID",
+    "buttons",
+    "byteLength",
+    "byteOffset",
+    "c",
+    "call",
+    "caller",
+    "canBeFormatted",
+    "canBeMounted",
+    "canBeShared",
+    "canHaveChildren",
+    "canHaveHTML",
+    "canPlayType",
+    "cancel",
+    "cancelAnimationFrame",
+    "cancelBubble",
+    "cancelScheduledValues",
+    "cancelable",
+    "candidate",
+    "canvas",
+    "caption",
+    "caption-side",
+    "captionSide",
+    "capture",
+    "captureEvents",
+    "captureStackTrace",
+    "caretPositionFromPoint",
+    "caretRangeFromPoint",
+    "cast",
+    "catch",
+    "category",
+    "cbrt",
+    "cd",
+    "ceil",
+    "cellIndex",
+    "cellPadding",
+    "cellSpacing",
+    "cells",
+    "ch",
+    "chOff",
+    "chain",
+    "challenge",
+    "changedTouches",
+    "channel",
+    "channelCount",
+    "channelCountMode",
+    "channelInterpretation",
+    "char",
+    "charAt",
+    "charCode",
+    "charCodeAt",
+    "charIndex",
+    "characterData",
+    "characterDataOldValue",
+    "characterSet",
+    "charging",
+    "chargingTime",
+    "charset",
+    "checkEnclosure",
+    "checkFramebufferStatus",
+    "checkIntersection",
+    "checkValidity",
+    "checked",
+    "childElementCount",
+    "childList",
+    "childNodes",
+    "children",
+    "chrome",
+    "ciphertext",
+    "cite",
+    "classList",
+    "className",
+    "classid",
+    "clear",
+    "clearAttributes",
+    "clearColor",
+    "clearData",
+    "clearDepth",
+    "clearImmediate",
+    "clearInterval",
+    "clearMarks",
+    "clearMeasures",
+    "clearParameters",
+    "clearRect",
+    "clearResourceTimings",
+    "clearShadow",
+    "clearStencil",
+    "clearTimeout",
+    "clearWatch",
+    "click",
+    "clickCount",
+    "clientHeight",
+    "clientInformation",
+    "clientLeft",
+    "clientRect",
+    "clientRects",
+    "clientTop",
+    "clientWidth",
+    "clientX",
+    "clientY",
+    "clip",
+    "clip-path",
+    "clip-rule",
+    "clipBottom",
+    "clipLeft",
+    "clipPath",
+    "clipPathUnits",
+    "clipRight",
+    "clipRule",
+    "clipTop",
+    "clipboardData",
+    "clone",
+    "cloneContents",
+    "cloneNode",
+    "cloneRange",
+    "close",
+    "closePath",
+    "closed",
+    "closest",
+    "clz",
+    "clz32",
+    "cmp",
+    "code",
+    "codeBase",
+    "codePointAt",
+    "codeType",
+    "colSpan",
+    "collapse",
+    "collapseToEnd",
+    "collapseToStart",
+    "collapsed",
+    "collect",
+    "colno",
+    "color",
+    "color-interpolation",
+    "color-interpolation-filters",
+    "colorDepth",
+    "colorInterpolation",
+    "colorInterpolationFilters",
+    "colorMask",
+    "colorType",
+    "cols",
+    "columnCount",
+    "columnFill",
+    "columnGap",
+    "columnNumber",
+    "columnRule",
+    "columnRuleColor",
+    "columnRuleStyle",
+    "columnRuleWidth",
+    "columnSpan",
+    "columnWidth",
+    "columns",
+    "command",
+    "commitPreferences",
+    "commonAncestorContainer",
+    "compact",
+    "compareBoundaryPoints",
+    "compareDocumentPosition",
+    "compareEndPoints",
+    "compareNode",
+    "comparePoint",
+    "compatMode",
+    "compatible",
+    "compile",
+    "compileShader",
+    "complete",
+    "componentFromPoint",
+    "compositionEndOffset",
+    "compositionStartOffset",
+    "compressedTexImage2D",
+    "compressedTexSubImage2D",
+    "concat",
+    "conditionText",
+    "coneInnerAngle",
+    "coneOuterAngle",
+    "coneOuterGain",
+    "confirm",
+    "confirmComposition",
+    "confirmSiteSpecificTrackingException",
+    "confirmWebWideTrackingException",
+    "connect",
+    "connectEnd",
+    "connectStart",
+    "connected",
+    "connection",
+    "connectionSpeed",
+    "console",
+    "consolidate",
+    "constrictionActive",
+    "constructor",
+    "contactID",
+    "contains",
+    "containsNode",
+    "content",
+    "contentDocument",
+    "contentEditable",
+    "contentOverflow",
+    "contentScriptType",
+    "contentStyleType",
+    "contentType",
+    "contentWindow",
+    "context",
+    "contextMenu",
+    "contextmenu",
+    "continue",
+    "continuous",
+    "control",
+    "controller",
+    "controls",
+    "convertToSpecifiedUnits",
+    "cookie",
+    "cookieEnabled",
+    "coords",
+    "copyFromChannel",
+    "copyTexImage2D",
+    "copyTexSubImage2D",
+    "copyToChannel",
+    "copyWithin",
+    "correspondingElement",
+    "correspondingUseElement",
+    "cos",
+    "cosh",
+    "count",
+    "counter-increment",
+    "counter-reset",
+    "counterIncrement",
+    "counterReset",
+    "cpuClass",
+    "cpuSleepAllowed",
+    "create",
+    "createAnalyser",
+    "createAnswer",
+    "createAttribute",
+    "createAttributeNS",
+    "createBiquadFilter",
+    "createBuffer",
+    "createBufferSource",
+    "createCDATASection",
+    "createCSSStyleSheet",
+    "createCaption",
+    "createChannelMerger",
+    "createChannelSplitter",
+    "createComment",
+    "createContextualFragment",
+    "createControlRange",
+    "createConvolver",
+    "createDTMFSender",
+    "createDataChannel",
+    "createDelay",
+    "createDelayNode",
+    "createDocument",
+    "createDocumentFragment",
+    "createDocumentType",
+    "createDynamicsCompressor",
+    "createElement",
+    "createElementNS",
+    "createEntityReference",
+    "createEvent",
+    "createEventObject",
+    "createExpression",
+    "createFramebuffer",
+    "createFunction",
+    "createGain",
+    "createGainNode",
+    "createHTMLDocument",
+    "createImageBitmap",
+    "createImageData",
+    "createIndex",
+    "createJavaScriptNode",
+    "createLinearGradient",
+    "createMediaElementSource",
+    "createMediaKeys",
+    "createMediaStreamDestination",
+    "createMediaStreamSource",
+    "createMutableFile",
+    "createNSResolver",
+    "createNodeIterator",
+    "createNotification",
+    "createObjectStore",
+    "createObjectURL",
+    "createOffer",
+    "createOscillator",
+    "createPanner",
+    "createPattern",
+    "createPeriodicWave",
+    "createPopup",
+    "createProcessingInstruction",
+    "createProgram",
+    "createRadialGradient",
+    "createRange",
+    "createRangeCollection",
+    "createRenderbuffer",
+    "createSVGAngle",
+    "createSVGLength",
+    "createSVGMatrix",
+    "createSVGNumber",
+    "createSVGPathSegArcAbs",
+    "createSVGPathSegArcRel",
+    "createSVGPathSegClosePath",
+    "createSVGPathSegCurvetoCubicAbs",
+    "createSVGPathSegCurvetoCubicRel",
+    "createSVGPathSegCurvetoCubicSmoothAbs",
+    "createSVGPathSegCurvetoCubicSmoothRel",
+    "createSVGPathSegCurvetoQuadraticAbs",
+    "createSVGPathSegCurvetoQuadraticRel",
+    "createSVGPathSegCurvetoQuadraticSmoothAbs",
+    "createSVGPathSegCurvetoQuadraticSmoothRel",
+    "createSVGPathSegLinetoAbs",
+    "createSVGPathSegLinetoHorizontalAbs",
+    "createSVGPathSegLinetoHorizontalRel",
+    "createSVGPathSegLinetoRel",
+    "createSVGPathSegLinetoVerticalAbs",
+    "createSVGPathSegLinetoVerticalRel",
+    "createSVGPathSegMovetoAbs",
+    "createSVGPathSegMovetoRel",
+    "createSVGPoint",
+    "createSVGRect",
+    "createSVGTransform",
+    "createSVGTransformFromMatrix",
+    "createScriptProcessor",
+    "createSession",
+    "createShader",
+    "createShadowRoot",
+    "createStereoPanner",
+    "createStyleSheet",
+    "createTBody",
+    "createTFoot",
+    "createTHead",
+    "createTextNode",
+    "createTextRange",
+    "createTexture",
+    "createTouch",
+    "createTouchList",
+    "createTreeWalker",
+    "createWaveShaper",
+    "creationTime",
+    "crossOrigin",
+    "crypto",
+    "csi",
+    "cssFloat",
+    "cssRules",
+    "cssText",
+    "cssValueType",
+    "ctrlKey",
+    "ctrlLeft",
+    "cues",
+    "cullFace",
+    "currentNode",
+    "currentPage",
+    "currentScale",
+    "currentScript",
+    "currentSrc",
+    "currentState",
+    "currentStyle",
+    "currentTarget",
+    "currentTime",
+    "currentTranslate",
+    "currentView",
+    "cursor",
+    "curve",
+    "customError",
+    "cx",
+    "cy",
+    "d",
+    "data",
+    "dataFld",
+    "dataFormatAs",
+    "dataPageSize",
+    "dataSrc",
+    "dataTransfer",
+    "database",
+    "dataset",
+    "dateTime",
+    "db",
+    "debug",
+    "debuggerEnabled",
+    "declare",
+    "decode",
+    "decodeAudioData",
+    "decodeURI",
+    "decodeURIComponent",
+    "decodingInfo",
+    "decrypt",
+    "default",
+    "defaultCharset",
+    "defaultChecked",
+    "defaultMuted",
+    "defaultPlaybackRate",
+    "defaultPrevented",
+    "defaultSelected",
+    "defaultStatus",
+    "defaultURL",
+    "defaultValue",
+    "defaultView",
+    "defaultstatus",
+    "defer",
+    "defineMagicFunction",
+    "defineMagicVariable",
+    "defineProperties",
+    "defineProperty",
+    "delayTime",
+    "delete",
+    "deleteBuffer",
+    "deleteCaption",
+    "deleteCell",
+    "deleteContents",
+    "deleteData",
+    "deleteDatabase",
+    "deleteFramebuffer",
+    "deleteFromDocument",
+    "deleteIndex",
+    "deleteMedium",
+    "deleteObjectStore",
+    "deleteProgram",
+    "deleteRenderbuffer",
+    "deleteRow",
+    "deleteRule",
+    "deleteShader",
+    "deleteTFoot",
+    "deleteTHead",
+    "deleteTexture",
+    "deliverChangeRecords",
+    "delivery",
+    "deliveryInfo",
+    "deliveryStatus",
+    "deliveryTimestamp",
+    "delta",
+    "deltaMode",
+    "deltaX",
+    "deltaY",
+    "deltaZ",
+    "depthFunc",
+    "depthMask",
+    "depthRange",
+    "deriveBits",
+    "deriveKey",
+    "description",
+    "deselectAll",
+    "designMode",
+    "destination",
+    "destinationURL",
+    "detach",
+    "detachEvent",
+    "detachShader",
+    "detail",
+    "detune",
+    "devicePixelRatio",
+    "deviceXDPI",
+    "deviceYDPI",
+    "diffuseConstant",
+    "digest",
+    "dimensions",
+    "dir",
+    "dirName",
+    "direction",
+    "dirxml",
+    "disable",
+    "disableVertexAttribArray",
+    "disabled",
+    "dischargingTime",
+    "disconnect",
+    "dispatchEvent",
+    "display",
+    "distanceModel",
+    "divisor",
+    "djsapi",
+    "djsproxy",
+    "doImport",
+    "doNotTrack",
+    "doScroll",
+    "doctype",
+    "document",
+    "documentElement",
+    "documentMode",
+    "documentURI",
+    "dolphin",
+    "dolphinGameCenter",
+    "dolphininfo",
+    "dolphinmeta",
+    "domComplete",
+    "domContentLoadedEventEnd",
+    "domContentLoadedEventStart",
+    "domInteractive",
+    "domLoading",
+    "domain",
+    "domainLookupEnd",
+    "domainLookupStart",
+    "dominant-baseline",
+    "dominantBaseline",
+    "done",
+    "dopplerFactor",
+    "download",
+    "dragDrop",
+    "draggable",
+    "drawArrays",
+    "drawArraysInstancedANGLE",
+    "drawCustomFocusRing",
+    "drawElements",
+    "drawElementsInstancedANGLE",
+    "drawFocusIfNeeded",
+    "drawImage",
+    "drawImageFromRect",
+    "drawSystemFocusRing",
+    "drawingBufferHeight",
+    "drawingBufferWidth",
+    "dropEffect",
+    "droppedVideoFrames",
+    "dropzone",
+    "dump",
+    "duplicate",
+    "duration",
+    "dvname",
+    "dvnum",
+    "dx",
+    "dy",
+    "dynsrc",
+    "e",
+    "edgeMode",
+    "effectAllowed",
+    "elapsedTime",
+    "elementFromPoint",
+    "elements",
+    "elevation",
+    "ellipse",
+    "email",
+    "embeds",
+    "empty",
+    "empty-cells",
+    "emptyCells",
+    "enable",
+    "enableBackground",
+    "enableStyleSheetsForSet",
+    "enableVertexAttribArray",
+    "enabled",
+    "enabledPlugin",
+    "encode",
+    "encodeURI",
+    "encodeURIComponent",
+    "encoding",
+    "encrypt",
+    "enctype",
+    "end",
+    "endContainer",
+    "endElement",
+    "endElementAt",
+    "endOfStream",
+    "endOffset",
+    "endTime",
+    "ended",
+    "endsWith",
+    "entities",
+    "entries",
+    "entryType",
+    "enumerate",
+    "enumerateEditable",
+    "error",
+    "errorCode",
+    "escape",
+    "eval",
+    "evaluate",
+    "event",
+    "eventPhase",
+    "every",
+    "exception",
+    "exec",
+    "execCommand",
+    "execCommandShowHelp",
+    "execScript",
+    "exitFullscreen",
+    "exitPointerLock",
+    "exp",
+    "expand",
+    "expandEntityReferences",
+    "expando",
+    "expansion",
+    "expiryDate",
+    "explicitOriginalTarget",
+    "expm1",
+    "exponent",
+    "exponentialRampToValueAtTime",
+    "exportKey",
+    "extend",
+    "extensions",
+    "extentNode",
+    "extentOffset",
+    "external",
+    "externalResourcesRequired",
+    "extractContents",
+    "extractable",
+    "f",
+    "face",
+    "factoryReset",
+    "fallback",
+    "familyName",
+    "farthestViewportElement",
+    "fastSeek",
+    "fatal",
+    "fetch",
+    "fetchStart",
+    "fftSize",
+    "fgColor",
+    "fileCreatedDate",
+    "fileHandle",
+    "fileModifiedDate",
+    "fileName",
+    "fileSize",
+    "fileUpdatedDate",
+    "filename",
+    "files",
+    "fill",
+    "fill-opacity",
+    "fill-rule",
+    "fillOpacity",
+    "fillRect",
+    "fillRule",
+    "fillStyle",
+    "fillText",
+    "filter",
+    "filterResX",
+    "filterResY",
+    "filterUnits",
+    "filters",
+    "finally",
+    "find",
+    "findIndex",
+    "findRule",
+    "findText",
+    "finish",
+    "fireEvent",
+    "firstChild",
+    "firstElementChild",
+    "firstPage",
+    "fixed",
+    "flex",
+    "flex-basis",
+    "flex-direction",
+    "flex-flow",
+    "flex-grow",
+    "flex-shrink",
+    "flex-wrap",
+    "flexBasis",
+    "flexDirection",
+    "flexFlow",
+    "flexGrow",
+    "flexShrink",
+    "flexWrap",
+    "flipX",
+    "flipY",
+    "float",
+    "flood-color",
+    "flood-opacity",
+    "floodColor",
+    "floodOpacity",
+    "floor",
+    "flush",
+    "focus",
+    "focusNode",
+    "focusOffset",
+    "font",
+    "font-family",
+    "font-feature-settings",
+    "font-kerning",
+    "font-language-override",
+    "font-size",
+    "font-size-adjust",
+    "font-stretch",
+    "font-style",
+    "font-synthesis",
+    "font-variant",
+    "font-variant-alternates",
+    "font-variant-caps",
+    "font-variant-east-asian",
+    "font-variant-ligatures",
+    "font-variant-numeric",
+    "font-variant-position",
+    "font-weight",
+    "fontFamily",
+    "fontFeatureSettings",
+    "fontKerning",
+    "fontLanguageOverride",
+    "fontSize",
+    "fontSizeAdjust",
+    "fontSmoothingEnabled",
+    "fontStretch",
+    "fontStyle",
+    "fontSynthesis",
+    "fontVariant",
+    "fontVariantAlternates",
+    "fontVariantCaps",
+    "fontVariantEastAsian",
+    "fontVariantLigatures",
+    "fontVariantNumeric",
+    "fontVariantPosition",
+    "fontWeight",
+    "fontcolor",
+    "fonts",
+    "fontsize",
+    "for",
+    "forEach",
+    "forceRedraw",
+    "form",
+    "formAction",
+    "formEnctype",
+    "formMethod",
+    "formNoValidate",
+    "formTarget",
+    "format",
+    "formatToParts",
+    "forms",
+    "forward",
+    "fr",
+    "frame",
+    "frameBorder",
+    "frameElement",
+    "frameSpacing",
+    "framebufferRenderbuffer",
+    "framebufferTexture2D",
+    "frames",
+    "freeSpace",
+    "freeze",
+    "frequency",
+    "frequencyBinCount",
+    "from",
+    "fromCharCode",
+    "fromCodePoint",
+    "fromElement",
+    "frontFace",
+    "fround",
+    "fullScreen",
+    "fullscreenElement",
+    "fullscreenEnabled",
+    "fx",
+    "fy",
+    "gain",
+    "gamepad",
+    "gamma",
+    "genderIdentity",
+    "generateKey",
+    "generateMipmap",
+    "generateRequest",
+    "geolocation",
+    "gestureObject",
+    "get",
+    "getActiveAttrib",
+    "getActiveUniform",
+    "getAdjacentText",
+    "getAll",
+    "getAllResponseHeaders",
+    "getAsFile",
+    "getAsString",
+    "getAttachedShaders",
+    "getAttribLocation",
+    "getAttribute",
+    "getAttributeNS",
+    "getAttributeNode",
+    "getAttributeNodeNS",
+    "getAudioTracks",
+    "getBBox",
+    "getBattery",
+    "getBlob",
+    "getBookmark",
+    "getBoundingClientRect",
+    "getBufferParameter",
+    "getByteFrequencyData",
+    "getByteTimeDomainData",
+    "getCSSCanvasContext",
+    "getCTM",
+    "getCandidateWindowClientRect",
+    "getChannelData",
+    "getCharNumAtPosition",
+    "getClientRect",
+    "getClientRects",
+    "getCompositionAlternatives",
+    "getComputedStyle",
+    "getComputedTextLength",
+    "getConfiguration",
+    "getContext",
+    "getContextAttributes",
+    "getCounterValue",
+    "getCueAsHTML",
+    "getCueById",
+    "getCurrentPosition",
+    "getCurrentTime",
+    "getData",
+    "getDatabaseNames",
+    "getDate",
+    "getDay",
+    "getDefaultComputedStyle",
+    "getDestinationInsertionPoints",
+    "getDistributedNodes",
+    "getEditable",
+    "getElementById",
+    "getElementsByClassName",
+    "getElementsByName",
+    "getElementsByTagName",
+    "getElementsByTagNameNS",
+    "getEnclosureList",
+    "getEndPositionOfChar",
+    "getEntries",
+    "getEntriesByName",
+    "getEntriesByType",
+    "getError",
+    "getExtension",
+    "getExtentOfChar",
+    "getFeature",
+    "getFile",
+    "getFloat32",
+    "getFloat64",
+    "getFloatFrequencyData",
+    "getFloatTimeDomainData",
+    "getFloatValue",
+    "getFramebufferAttachmentParameter",
+    "getFrequencyResponse",
+    "getFullYear",
+    "getGamepads",
+    "getHours",
+    "getImageData",
+    "getInt16",
+    "getInt32",
+    "getInt8",
+    "getIntersectionList",
+    "getItem",
+    "getItems",
+    "getKey",
+    "getLineDash",
+    "getLocalStreams",
+    "getMarks",
+    "getMatchedCSSRules",
+    "getMeasures",
+    "getMetadata",
+    "getMilliseconds",
+    "getMinutes",
+    "getModifierState",
+    "getMonth",
+    "getNamedItem",
+    "getNamedItemNS",
+    "getNotifier",
+    "getNumberOfChars",
+    "getOverrideHistoryNavigationMode",
+    "getOverrideStyle",
+    "getOwnPropertyDescriptor",
+    "getOwnPropertyNames",
+    "getOwnPropertySymbols",
+    "getParameter",
+    "getPathSegAtLength",
+    "getPointAtLength",
+    "getPreference",
+    "getPreferenceDefault",
+    "getPresentationAttribute",
+    "getPreventDefault",
+    "getProgramInfoLog",
+    "getProgramParameter",
+    "getPropertyCSSValue",
+    "getPropertyPriority",
+    "getPropertyShorthand",
+    "getPropertyValue",
+    "getPrototypeOf",
+    "getRGBColorValue",
+    "getRandomValues",
+    "getRangeAt",
+    "getReceivers",
+    "getRectValue",
+    "getRegistration",
+    "getRemoteStreams",
+    "getRenderbufferParameter",
+    "getResponseHeader",
+    "getRoot",
+    "getRotationOfChar",
+    "getSVGDocument",
+    "getScreenCTM",
+    "getSeconds",
+    "getSelection",
+    "getSenders",
+    "getShaderInfoLog",
+    "getShaderParameter",
+    "getShaderPrecisionFormat",
+    "getShaderSource",
+    "getSimpleDuration",
+    "getSiteIcons",
+    "getSources",
+    "getSpeculativeParserUrls",
+    "getStartPositionOfChar",
+    "getStartTime",
+    "getStats",
+    "getStorageUpdates",
+    "getStreamById",
+    "getStringValue",
+    "getSubStringLength",
+    "getSubscription",
+    "getSupportedExtensions",
+    "getTexParameter",
+    "getTime",
+    "getTimezoneOffset",
+    "getTotalLength",
+    "getTrackById",
+    "getTracks",
+    "getTransformToElement",
+    "getUTCDate",
+    "getUTCDay",
+    "getUTCFullYear",
+    "getUTCHours",
+    "getUTCMilliseconds",
+    "getUTCMinutes",
+    "getUTCMonth",
+    "getUTCSeconds",
+    "getUint16",
+    "getUint32",
+    "getUint8",
+    "getUniform",
+    "getUniformLocation",
+    "getUserMedia",
+    "getValues",
+    "getVarDate",
+    "getVariableValue",
+    "getVertexAttrib",
+    "getVertexAttribOffset",
+    "getVideoPlaybackQuality",
+    "getVideoTracks",
+    "getWakeLockState",
+    "getYear",
+    "givenName",
+    "global",
+    "globalAlpha",
+    "globalCompositeOperation",
+    "glyphOrientationHorizontal",
+    "glyphOrientationVertical",
+    "glyphRef",
+    "go",
+    "gradientTransform",
+    "gradientUnits",
+    "grammars",
+    "green",
+    "group",
+    "groupCollapsed",
+    "groupEnd",
+    "hardwareConcurrency",
+    "has",
+    "hasAttribute",
+    "hasAttributeNS",
+    "hasAttributes",
+    "hasChildNodes",
+    "hasComposition",
+    "hasExtension",
+    "hasFeature",
+    "hasFocus",
+    "hasLayout",
+    "hasOwnProperty",
+    "hash",
+    "head",
+    "headers",
+    "heading",
+    "height",
+    "hidden",
+    "hide",
+    "hideFocus",
+    "high",
+    "hint",
+    "history",
+    "honorificPrefix",
+    "honorificSuffix",
+    "horizontalOverflow",
+    "host",
+    "hostname",
+    "href",
+    "hreflang",
+    "hspace",
+    "html5TagCheckInerface",
+    "htmlFor",
+    "htmlText",
+    "httpEquiv",
+    "hwTimestamp",
+    "hypot",
+    "iccId",
+    "iceConnectionState",
+    "iceGatheringState",
+    "icon",
+    "id",
+    "identifier",
+    "identity",
+    "ignoreBOM",
+    "ignoreCase",
+    "image-orientation",
+    "image-rendering",
+    "imageOrientation",
+    "imageRendering",
+    "images",
+    "ime-mode",
+    "imeMode",
+    "implementation",
+    "importKey",
+    "importNode",
+    "importStylesheet",
+    "imports",
+    "impp",
+    "imul",
+    "in1",
+    "in2",
+    "inBandMetadataTrackDispatchType",
+    "inRange",
+    "includes",
+    "incremental",
+    "indeterminate",
+    "index",
+    "indexNames",
+    "indexOf",
+    "indexedDB",
+    "inertiaDestinationX",
+    "inertiaDestinationY",
+    "info",
+    "init",
+    "initAnimationEvent",
+    "initBeforeLoadEvent",
+    "initClipboardEvent",
+    "initCloseEvent",
+    "initCommandEvent",
+    "initCompositionEvent",
+    "initCustomEvent",
+    "initData",
+    "initDeviceMotionEvent",
+    "initDeviceOrientationEvent",
+    "initDragEvent",
+    "initErrorEvent",
+    "initEvent",
+    "initFocusEvent",
+    "initGestureEvent",
+    "initHashChangeEvent",
+    "initKeyEvent",
+    "initKeyboardEvent",
+    "initMSManipulationEvent",
+    "initMessageEvent",
+    "initMouseEvent",
+    "initMouseScrollEvent",
+    "initMouseWheelEvent",
+    "initMutationEvent",
+    "initNSMouseEvent",
+    "initOverflowEvent",
+    "initPageEvent",
+    "initPageTransitionEvent",
+    "initPointerEvent",
+    "initPopStateEvent",
+    "initProgressEvent",
+    "initScrollAreaEvent",
+    "initSimpleGestureEvent",
+    "initStorageEvent",
+    "initTextEvent",
+    "initTimeEvent",
+    "initTouchEvent",
+    "initTransitionEvent",
+    "initUIEvent",
+    "initWebKitAnimationEvent",
+    "initWebKitTransitionEvent",
+    "initWebKitWheelEvent",
+    "initWheelEvent",
+    "initialTime",
+    "initialize",
+    "initiatorType",
+    "inner",
+    "innerHTML",
+    "innerHeight",
+    "innerText",
+    "innerWidth",
+    "input",
+    "inputBuffer",
+    "inputEncoding",
+    "inputMethod",
+    "insertAdjacentElement",
+    "insertAdjacentHTML",
+    "insertAdjacentText",
+    "insertBefore",
+    "insertCell",
+    "insertData",
+    "insertItemBefore",
+    "insertNode",
+    "insertRow",
+    "insertRule",
+    "instanceRoot",
+    "intercept",
+    "interimResults",
+    "internalSubset",
+    "intersectsNode",
+    "interval",
+    "invalidIteratorState",
+    "inverse",
+    "invertSelf",
+    "is",
+    "is2D",
+    "isAlternate",
+    "isArray",
+    "isBingCurrentSearchDefault",
+    "isBuffer",
+    "isCandidateWindowVisible",
+    "isChar",
+    "isCollapsed",
+    "isComposing",
+    "isContentEditable",
+    "isContentHandlerRegistered",
+    "isContextLost",
+    "isDefaultNamespace",
+    "isDisabled",
+    "isEnabled",
+    "isEqual",
+    "isEqualNode",
+    "isExtensible",
+    "isFinite",
+    "isFramebuffer",
+    "isFrozen",
+    "isGenerator",
+    "isId",
+    "isInjected",
+    "isInteger",
+    "isMap",
+    "isMultiLine",
+    "isNaN",
+    "isOpen",
+    "isPointInFill",
+    "isPointInPath",
+    "isPointInRange",
+    "isPointInStroke",
+    "isPrefAlternate",
+    "isPrimary",
+    "isProgram",
+    "isPropertyImplicit",
+    "isProtocolHandlerRegistered",
+    "isPrototypeOf",
+    "isRenderbuffer",
+    "isSafeInteger",
+    "isSameNode",
+    "isSealed",
+    "isShader",
+    "isSupported",
+    "isTextEdit",
+    "isTexture",
+    "isTrusted",
+    "isTypeSupported",
+    "isView",
+    "isolation",
+    "italics",
+    "item",
+    "itemId",
+    "itemProp",
+    "itemRef",
+    "itemScope",
+    "itemType",
+    "itemValue",
+    "iterateNext",
+    "iterator",
+    "javaEnabled",
+    "jobTitle",
+    "join",
+    "json",
+    "justify-content",
+    "justifyContent",
+    "k1",
+    "k2",
+    "k3",
+    "k4",
+    "kernelMatrix",
+    "kernelUnitLengthX",
+    "kernelUnitLengthY",
+    "kerning",
+    "key",
+    "keyCode",
+    "keyFor",
+    "keyIdentifier",
+    "keyLightEnabled",
+    "keyLocation",
+    "keyPath",
+    "keySystem",
+    "keyText",
+    "keyUsage",
+    "keys",
+    "keytype",
+    "kind",
+    "knee",
+    "label",
+    "labels",
+    "lang",
+    "language",
+    "languages",
+    "largeArcFlag",
+    "lastChild",
+    "lastElementChild",
+    "lastEventId",
+    "lastIndex",
+    "lastIndexOf",
+    "lastMatch",
+    "lastMessageSubject",
+    "lastMessageType",
+    "lastModified",
+    "lastModifiedDate",
+    "lastPage",
+    "lastParen",
+    "lastState",
+    "lastStyleSheetSet",
+    "latitude",
+    "layerX",
+    "layerY",
+    "layoutFlow",
+    "layoutGrid",
+    "layoutGridChar",
+    "layoutGridLine",
+    "layoutGridMode",
+    "layoutGridType",
+    "lbound",
+    "left",
+    "leftContext",
+    "leftMargin",
+    "length",
+    "lengthAdjust",
+    "lengthComputable",
+    "letter-spacing",
+    "letterSpacing",
+    "level",
+    "lighting-color",
+    "lightingColor",
+    "limitingConeAngle",
+    "line",
+    "line-height",
+    "lineAlign",
+    "lineBreak",
+    "lineCap",
+    "lineDashOffset",
+    "lineHeight",
+    "lineJoin",
+    "lineNumber",
+    "lineTo",
+    "lineWidth",
+    "linearRampToValueAtTime",
+    "lineno",
+    "link",
+    "linkColor",
+    "linkProgram",
+    "links",
+    "list",
+    "list-style",
+    "list-style-image",
+    "list-style-position",
+    "list-style-type",
+    "listStyle",
+    "listStyleImage",
+    "listStylePosition",
+    "listStyleType",
+    "listener",
+    "load",
+    "loadEventEnd",
+    "loadEventStart",
+    "loadTimes",
+    "loaded",
+    "localDescription",
+    "localName",
+    "localStorage",
+    "locale",
+    "localeCompare",
+    "location",
+    "locationbar",
+    "lock",
+    "lockedFile",
+    "log",
+    "log10",
+    "log1p",
+    "log2",
+    "logicalXDPI",
+    "logicalYDPI",
+    "longDesc",
+    "longitude",
+    "lookupNamespaceURI",
+    "lookupPrefix",
+    "loop",
+    "loopEnd",
+    "loopStart",
+    "looping",
+    "low",
+    "lower",
+    "lowerBound",
+    "lowerOpen",
+    "lowsrc",
+    "m11",
+    "m12",
+    "m13",
+    "m14",
+    "m21",
+    "m22",
+    "m23",
+    "m24",
+    "m31",
+    "m32",
+    "m33",
+    "m34",
+    "m41",
+    "m42",
+    "m43",
+    "m44",
+    "manifest",
+    "map",
+    "mapping",
+    "margin",
+    "margin-bottom",
+    "margin-left",
+    "margin-right",
+    "margin-top",
+    "marginBottom",
+    "marginHeight",
+    "marginLeft",
+    "marginRight",
+    "marginTop",
+    "marginWidth",
+    "mark",
+    "marker",
+    "marker-end",
+    "marker-mid",
+    "marker-offset",
+    "marker-start",
+    "markerEnd",
+    "markerHeight",
+    "markerMid",
+    "markerOffset",
+    "markerStart",
+    "markerUnits",
+    "markerWidth",
+    "marks",
+    "mask",
+    "mask-type",
+    "maskContentUnits",
+    "maskType",
+    "maskUnits",
+    "match",
+    "matchMedia",
+    "matchMedium",
+    "matches",
+    "matrix",
+    "matrixTransform",
+    "max",
+    "max-height",
+    "max-width",
+    "maxAlternatives",
+    "maxChannelCount",
+    "maxConnectionsPerServer",
+    "maxDecibels",
+    "maxDistance",
+    "maxHeight",
+    "maxLength",
+    "maxTouchPoints",
+    "maxValue",
+    "maxWidth",
+    "measure",
+    "measureText",
+    "media",
+    "mediaCapabilities",
+    "mediaDevices",
+    "mediaElement",
+    "mediaGroup",
+    "mediaKeys",
+    "mediaText",
+    "meetOrSlice",
+    "memory",
+    "menubar",
+    "mergeAttributes",
+    "message",
+    "messageClass",
+    "messageHandlers",
+    "metaKey",
+    "method",
+    "mimeType",
+    "mimeTypes",
+    "min",
+    "min-height",
+    "min-width",
+    "minDecibels",
+    "minHeight",
+    "minValue",
+    "minWidth",
+    "miterLimit",
+    "mix-blend-mode",
+    "mixBlendMode",
+    "mode",
+    "modify",
+    "mount",
+    "move",
+    "moveBy",
+    "moveEnd",
+    "moveFirst",
+    "moveFocusDown",
+    "moveFocusLeft",
+    "moveFocusRight",
+    "moveFocusUp",
+    "moveNext",
+    "moveRow",
+    "moveStart",
+    "moveTo",
+    "moveToBookmark",
+    "moveToElementText",
+    "moveToPoint",
+    "mozAdd",
+    "mozAnimationStartTime",
+    "mozAnon",
+    "mozApps",
+    "mozAudioCaptured",
+    "mozAudioChannelType",
+    "mozAutoplayEnabled",
+    "mozCancelAnimationFrame",
+    "mozCancelFullScreen",
+    "mozCancelRequestAnimationFrame",
+    "mozCaptureStream",
+    "mozCaptureStreamUntilEnded",
+    "mozClearDataAt",
+    "mozContact",
+    "mozContacts",
+    "mozCreateFileHandle",
+    "mozCurrentTransform",
+    "mozCurrentTransformInverse",
+    "mozCursor",
+    "mozDash",
+    "mozDashOffset",
+    "mozDecodedFrames",
+    "mozExitPointerLock",
+    "mozFillRule",
+    "mozFragmentEnd",
+    "mozFrameDelay",
+    "mozFullScreen",
+    "mozFullScreenElement",
+    "mozFullScreenEnabled",
+    "mozGetAll",
+    "mozGetAllKeys",
+    "mozGetAsFile",
+    "mozGetDataAt",
+    "mozGetMetadata",
+    "mozGetUserMedia",
+    "mozHasAudio",
+    "mozHasItem",
+    "mozHidden",
+    "mozImageSmoothingEnabled",
+    "mozIndexedDB",
+    "mozInnerScreenX",
+    "mozInnerScreenY",
+    "mozInputSource",
+    "mozIsTextField",
+    "mozItem",
+    "mozItemCount",
+    "mozItems",
+    "mozLength",
+    "mozLockOrientation",
+    "mozMatchesSelector",
+    "mozMovementX",
+    "mozMovementY",
+    "mozOpaque",
+    "mozOrientation",
+    "mozPaintCount",
+    "mozPaintedFrames",
+    "mozParsedFrames",
+    "mozPay",
+    "mozPointerLockElement",
+    "mozPresentedFrames",
+    "mozPreservesPitch",
+    "mozPressure",
+    "mozPrintCallback",
+    "mozRTCIceCandidate",
+    "mozRTCPeerConnection",
+    "mozRTCSessionDescription",
+    "mozRemove",
+    "mozRequestAnimationFrame",
+    "mozRequestFullScreen",
+    "mozRequestPointerLock",
+    "mozSetDataAt",
+    "mozSetImageElement",
+    "mozSourceNode",
+    "mozSrcObject",
+    "mozSystem",
+    "mozTCPSocket",
+    "mozTextStyle",
+    "mozTypesAt",
+    "mozUnlockOrientation",
+    "mozUserCancelled",
+    "mozVisibilityState",
+    "msAnimation",
+    "msAnimationDelay",
+    "msAnimationDirection",
+    "msAnimationDuration",
+    "msAnimationFillMode",
+    "msAnimationIterationCount",
+    "msAnimationName",
+    "msAnimationPlayState",
+    "msAnimationStartTime",
+    "msAnimationTimingFunction",
+    "msBackfaceVisibility",
+    "msBlockProgression",
+    "msCSSOMElementFloatMetrics",
+    "msCaching",
+    "msCachingEnabled",
+    "msCancelRequestAnimationFrame",
+    "msCapsLockWarningOff",
+    "msClearImmediate",
+    "msClose",
+    "msContentZoomChaining",
+    "msContentZoomFactor",
+    "msContentZoomLimit",
+    "msContentZoomLimitMax",
+    "msContentZoomLimitMin",
+    "msContentZoomSnap",
+    "msContentZoomSnapPoints",
+    "msContentZoomSnapType",
+    "msContentZooming",
+    "msConvertURL",
+    "msCrypto",
+    "msDoNotTrack",
+    "msElementsFromPoint",
+    "msElementsFromRect",
+    "msExitFullscreen",
+    "msExtendedCode",
+    "msFillRule",
+    "msFirstPaint",
+    "msFlex",
+    "msFlexAlign",
+    "msFlexDirection",
+    "msFlexFlow",
+    "msFlexItemAlign",
+    "msFlexLinePack",
+    "msFlexNegative",
+    "msFlexOrder",
+    "msFlexPack",
+    "msFlexPositive",
+    "msFlexPreferredSize",
+    "msFlexWrap",
+    "msFlowFrom",
+    "msFlowInto",
+    "msFontFeatureSettings",
+    "msFullscreenElement",
+    "msFullscreenEnabled",
+    "msGetInputContext",
+    "msGetRegionContent",
+    "msGetUntransformedBounds",
+    "msGraphicsTrustStatus",
+    "msGridColumn",
+    "msGridColumnAlign",
+    "msGridColumnSpan",
+    "msGridColumns",
+    "msGridRow",
+    "msGridRowAlign",
+    "msGridRowSpan",
+    "msGridRows",
+    "msHidden",
+    "msHighContrastAdjust",
+    "msHyphenateLimitChars",
+    "msHyphenateLimitLines",
+    "msHyphenateLimitZone",
+    "msHyphens",
+    "msImageSmoothingEnabled",
+    "msImeAlign",
+    "msIndexedDB",
+    "msInterpolationMode",
+    "msIsStaticHTML",
+    "msKeySystem",
+    "msKeys",
+    "msLaunchUri",
+    "msLockOrientation",
+    "msManipulationViewsEnabled",
+    "msMatchMedia",
+    "msMatchesSelector",
+    "msMaxTouchPoints",
+    "msOrientation",
+    "msOverflowStyle",
+    "msPerspective",
+    "msPerspectiveOrigin",
+    "msPlayToDisabled",
+    "msPlayToPreferredSourceUri",
+    "msPlayToPrimary",
+    "msPointerEnabled",
+    "msRegionOverflow",
+    "msReleasePointerCapture",
+    "msRequestAnimationFrame",
+    "msRequestFullscreen",
+    "msSaveBlob",
+    "msSaveOrOpenBlob",
+    "msScrollChaining",
+    "msScrollLimit",
+    "msScrollLimitXMax",
+    "msScrollLimitXMin",
+    "msScrollLimitYMax",
+    "msScrollLimitYMin",
+    "msScrollRails",
+    "msScrollSnapPointsX",
+    "msScrollSnapPointsY",
+    "msScrollSnapType",
+    "msScrollSnapX",
+    "msScrollSnapY",
+    "msScrollTranslation",
+    "msSetImmediate",
+    "msSetMediaKeys",
+    "msSetPointerCapture",
+    "msTextCombineHorizontal",
+    "msTextSizeAdjust",
+    "msToBlob",
+    "msTouchAction",
+    "msTouchSelect",
+    "msTraceAsyncCallbackCompleted",
+    "msTraceAsyncCallbackStarting",
+    "msTraceAsyncOperationCompleted",
+    "msTraceAsyncOperationStarting",
+    "msTransform",
+    "msTransformOrigin",
+    "msTransformStyle",
+    "msTransition",
+    "msTransitionDelay",
+    "msTransitionDuration",
+    "msTransitionProperty",
+    "msTransitionTimingFunction",
+    "msUnlockOrientation",
+    "msUpdateAsyncCallbackRelation",
+    "msUserSelect",
+    "msVisibilityState",
+    "msWrapFlow",
+    "msWrapMargin",
+    "msWrapThrough",
+    "msWriteProfilerMark",
+    "msZoom",
+    "msZoomTo",
+    "mt",
+    "multiEntry",
+    "multiSelectionObj",
+    "multiline",
+    "multiple",
+    "multiply",
+    "multiplySelf",
+    "mutableFile",
+    "muted",
+    "n",
+    "name",
+    "nameProp",
+    "namedItem",
+    "namedRecordset",
+    "names",
+    "namespaceURI",
+    "namespaces",
+    "naturalHeight",
+    "naturalWidth",
+    "navigate",
+    "navigation",
+    "navigationMode",
+    "navigationStart",
+    "navigator",
+    "near",
+    "nearestViewportElement",
+    "negative",
+    "netscape",
+    "networkState",
+    "newScale",
+    "newTranslate",
+    "newURL",
+    "newValue",
+    "newValueSpecifiedUnits",
+    "newVersion",
+    "newhome",
+    "next",
+    "nextElementSibling",
+    "nextNode",
+    "nextPage",
+    "nextSibling",
+    "nickname",
+    "noHref",
+    "noResize",
+    "noShade",
+    "noValidate",
+    "noWrap",
+    "nodeName",
+    "nodeType",
+    "nodeValue",
+    "normalize",
+    "normalizedPathSegList",
+    "notationName",
+    "notations",
+    "note",
+    "noteGrainOn",
+    "noteOff",
+    "noteOn",
+    "now",
+    "numOctaves",
+    "number",
+    "numberOfChannels",
+    "numberOfInputs",
+    "numberOfItems",
+    "numberOfOutputs",
+    "numberValue",
+    "oMatchesSelector",
+    "object",
+    "object-fit",
+    "object-position",
+    "objectFit",
+    "objectPosition",
+    "objectStore",
+    "objectStoreNames",
+    "observe",
+    "of",
+    "offscreenBuffering",
+    "offset",
+    "offsetHeight",
+    "offsetLeft",
+    "offsetNode",
+    "offsetParent",
+    "offsetTop",
+    "offsetWidth",
+    "offsetX",
+    "offsetY",
+    "ok",
+    "oldURL",
+    "oldValue",
+    "oldVersion",
+    "olderShadowRoot",
+    "onLine",
+    "onabort",
+    "onactivate",
+    "onactive",
+    "onaddstream",
+    "onaddtrack",
+    "onafterprint",
+    "onafterscriptexecute",
+    "onafterupdate",
+    "onaudioend",
+    "onaudioprocess",
+    "onaudiostart",
+    "onautocomplete",
+    "onautocompleteerror",
+    "onbeforeactivate",
+    "onbeforecopy",
+    "onbeforecut",
+    "onbeforedeactivate",
+    "onbeforeeditfocus",
+    "onbeforepaste",
+    "onbeforeprint",
+    "onbeforescriptexecute",
+    "onbeforeunload",
+    "onbeforeupdate",
+    "onblocked",
+    "onblur",
+    "onbounce",
+    "onboundary",
+    "oncached",
+    "oncancel",
+    "oncandidatewindowhide",
+    "oncandidatewindowshow",
+    "oncandidatewindowupdate",
+    "oncanplay",
+    "oncanplaythrough",
+    "once",
+    "oncellchange",
+    "onchange",
+    "onchargingchange",
+    "onchargingtimechange",
+    "onchecking",
+    "onclick",
+    "onclose",
+    "oncompassneedscalibration",
+    "oncomplete",
+    "oncontextmenu",
+    "oncontrolselect",
+    "oncopy",
+    "oncuechange",
+    "oncut",
+    "ondataavailable",
+    "ondatachannel",
+    "ondatasetchanged",
+    "ondatasetcomplete",
+    "ondblclick",
+    "ondeactivate",
+    "ondevicelight",
+    "ondevicemotion",
+    "ondeviceorientation",
+    "ondeviceproximity",
+    "ondischargingtimechange",
+    "ondisplay",
+    "ondownloading",
+    "ondrag",
+    "ondragend",
+    "ondragenter",
+    "ondragleave",
+    "ondragover",
+    "ondragstart",
+    "ondrop",
+    "ondurationchange",
+    "onemptied",
+    "onencrypted",
+    "onend",
+    "onended",
+    "onenter",
+    "onerror",
+    "onerrorupdate",
+    "onexit",
+    "onfilterchange",
+    "onfinish",
+    "onfocus",
+    "onfocusin",
+    "onfocusout",
+    "onfullscreenchange",
+    "onfullscreenerror",
+    "ongesturechange",
+    "ongestureend",
+    "ongesturestart",
+    "ongotpointercapture",
+    "onhashchange",
+    "onhelp",
+    "onicecandidate",
+    "oniceconnectionstatechange",
+    "oninactive",
+    "oninput",
+    "oninvalid",
+    "onkeydown",
+    "onkeypress",
+    "onkeyup",
+    "onlanguagechange",
+    "onlayoutcomplete",
+    "onlevelchange",
+    "onload",
+    "onloadeddata",
+    "onloadedmetadata",
+    "onloadend",
+    "onloadstart",
+    "onlosecapture",
+    "onlostpointercapture",
+    "only",
+    "onmark",
+    "onmessage",
+    "onmousedown",
+    "onmouseenter",
+    "onmouseleave",
+    "onmousemove",
+    "onmouseout",
+    "onmouseover",
+    "onmouseup",
+    "onmousewheel",
+    "onmove",
+    "onmoveend",
+    "onmovestart",
+    "onmozfullscreenchange",
+    "onmozfullscreenerror",
+    "onmozorientationchange",
+    "onmozpointerlockchange",
+    "onmozpointerlockerror",
+    "onmscontentzoom",
+    "onmsfullscreenchange",
+    "onmsfullscreenerror",
+    "onmsgesturechange",
+    "onmsgesturedoubletap",
+    "onmsgestureend",
+    "onmsgesturehold",
+    "onmsgesturestart",
+    "onmsgesturetap",
+    "onmsgotpointercapture",
+    "onmsinertiastart",
+    "onmslostpointercapture",
+    "onmsmanipulationstatechanged",
+    "onmsneedkey",
+    "onmsorientationchange",
+    "onmspointercancel",
+    "onmspointerdown",
+    "onmspointerenter",
+    "onmspointerhover",
+    "onmspointerleave",
+    "onmspointermove",
+    "onmspointerout",
+    "onmspointerover",
+    "onmspointerup",
+    "onmssitemodejumplistitemremoved",
+    "onmsthumbnailclick",
+    "onnegotiationneeded",
+    "onnomatch",
+    "onnoupdate",
+    "onobsolete",
+    "onoffline",
+    "ononline",
+    "onopen",
+    "onorientationchange",
+    "onpagechange",
+    "onpagehide",
+    "onpageshow",
+    "onpaste",
+    "onpause",
+    "onplay",
+    "onplaying",
+    "onpluginstreamstart",
+    "onpointercancel",
+    "onpointerdown",
+    "onpointerenter",
+    "onpointerleave",
+    "onpointerlockchange",
+    "onpointerlockerror",
+    "onpointermove",
+    "onpointerout",
+    "onpointerover",
+    "onpointerup",
+    "onpopstate",
+    "onprogress",
+    "onpropertychange",
+    "onratechange",
+    "onreadystatechange",
+    "onremovestream",
+    "onremovetrack",
+    "onreset",
+    "onresize",
+    "onresizeend",
+    "onresizestart",
+    "onresourcetimingbufferfull",
+    "onresult",
+    "onresume",
+    "onrowenter",
+    "onrowexit",
+    "onrowsdelete",
+    "onrowsinserted",
+    "onscroll",
+    "onsearch",
+    "onseeked",
+    "onseeking",
+    "onselect",
+    "onselectionchange",
+    "onselectstart",
+    "onshow",
+    "onsignalingstatechange",
+    "onsoundend",
+    "onsoundstart",
+    "onspeechend",
+    "onspeechstart",
+    "onstalled",
+    "onstart",
+    "onstatechange",
+    "onstop",
+    "onstorage",
+    "onstoragecommit",
+    "onsubmit",
+    "onsuccess",
+    "onsuspend",
+    "ontextinput",
+    "ontimeout",
+    "ontimeupdate",
+    "ontoggle",
+    "ontouchcancel",
+    "ontouchend",
+    "ontouchmove",
+    "ontouchstart",
+    "ontransitionend",
+    "onunload",
+    "onupdateready",
+    "onupgradeneeded",
+    "onuserproximity",
+    "onversionchange",
+    "onvoiceschanged",
+    "onvolumechange",
+    "onwaiting",
+    "onwarning",
+    "onwebkitanimationend",
+    "onwebkitanimationiteration",
+    "onwebkitanimationstart",
+    "onwebkitcurrentplaybacktargetiswirelesschanged",
+    "onwebkitfullscreenchange",
+    "onwebkitfullscreenerror",
+    "onwebkitkeyadded",
+    "onwebkitkeyerror",
+    "onwebkitkeymessage",
+    "onwebkitneedkey",
+    "onwebkitorientationchange",
+    "onwebkitplaybacktargetavailabilitychanged",
+    "onwebkitpointerlockchange",
+    "onwebkitpointerlockerror",
+    "onwebkitresourcetimingbufferfull",
+    "onwebkittransitionend",
+    "onwheel",
+    "onzoom",
+    "opacity",
+    "open",
+    "openCursor",
+    "openDatabase",
+    "openKeyCursor",
+    "opener",
+    "opera",
+    "operationType",
+    "operator",
+    "opr",
+    "optimum",
+    "options",
+    "order",
+    "orderX",
+    "orderY",
+    "ordered",
+    "org",
+    "orient",
+    "orientAngle",
+    "orientType",
+    "orientation",
+    "origin",
+    "originalTarget",
+    "orphans",
+    "oscpu",
+    "outerHTML",
+    "outerHeight",
+    "outerText",
+    "outerWidth",
+    "outline",
+    "outline-color",
+    "outline-offset",
+    "outline-style",
+    "outline-width",
+    "outlineColor",
+    "outlineOffset",
+    "outlineStyle",
+    "outlineWidth",
+    "outputBuffer",
+    "overflow",
+    "overflow-x",
+    "overflow-y",
+    "overflowX",
+    "overflowY",
+    "overrideMimeType",
+    "oversample",
+    "ownerDocument",
+    "ownerElement",
+    "ownerNode",
+    "ownerRule",
+    "ownerSVGElement",
+    "owningElement",
+    "p1",
+    "p2",
+    "p3",
+    "p4",
+    "pad",
+    "padding",
+    "padding-bottom",
+    "padding-left",
+    "padding-right",
+    "padding-top",
+    "paddingBottom",
+    "paddingLeft",
+    "paddingRight",
+    "paddingTop",
+    "page",
+    "page-break-after",
+    "page-break-before",
+    "page-break-inside",
+    "pageBreakAfter",
+    "pageBreakBefore",
+    "pageBreakInside",
+    "pageCount",
+    "pageX",
+    "pageXOffset",
+    "pageY",
+    "pageYOffset",
+    "pages",
+    "paint-order",
+    "paintOrder",
+    "paintRequests",
+    "paintType",
+    "palette",
+    "panningModel",
+    "parent",
+    "parentElement",
+    "parentNode",
+    "parentRule",
+    "parentStyleSheet",
+    "parentTextEdit",
+    "parentWindow",
+    "parse",
+    "parseFloat",
+    "parseFromString",
+    "parseInt",
+    "participants",
+    "passive",
+    "password",
+    "pasteHTML",
+    "path",
+    "pathLength",
+    "pathSegList",
+    "pathSegType",
+    "pathSegTypeAsLetter",
+    "pathname",
+    "pattern",
+    "patternContentUnits",
+    "patternMismatch",
+    "patternTransform",
+    "patternUnits",
+    "pause",
+    "pauseAnimations",
+    "pauseOnExit",
+    "paused",
+    "pending",
+    "performance",
+    "permission",
+    "persisted",
+    "personalbar",
+    "perspective",
+    "perspective-origin",
+    "perspectiveOrigin",
+    "phoneticFamilyName",
+    "phoneticGivenName",
+    "photo",
+    "ping",
+    "pitch",
+    "pixelBottom",
+    "pixelDepth",
+    "pixelHeight",
+    "pixelLeft",
+    "pixelRight",
+    "pixelStorei",
+    "pixelTop",
+    "pixelUnitToMillimeterX",
+    "pixelUnitToMillimeterY",
+    "pixelWidth",
+    "placeholder",
+    "platform",
+    "play",
+    "playbackRate",
+    "playbackState",
+    "playbackTime",
+    "played",
+    "plugins",
+    "pluginspage",
+    "pname",
+    "pointer-events",
+    "pointerBeforeReferenceNode",
+    "pointerEnabled",
+    "pointerEvents",
+    "pointerId",
+    "pointerLockElement",
+    "pointerType",
+    "points",
+    "pointsAtX",
+    "pointsAtY",
+    "pointsAtZ",
+    "polygonOffset",
+    "pop",
+    "popupWindowFeatures",
+    "popupWindowName",
+    "popupWindowURI",
+    "port",
+    "port1",
+    "port2",
+    "ports",
+    "posBottom",
+    "posHeight",
+    "posLeft",
+    "posRight",
+    "posTop",
+    "posWidth",
+    "position",
+    "positionAlign",
+    "postError",
+    "postMessage",
+    "poster",
+    "pow",
+    "powerOff",
+    "preMultiplySelf",
+    "precision",
+    "preferredStyleSheetSet",
+    "preferredStylesheetSet",
+    "prefix",
+    "preload",
+    "prepend",
+    "preserveAlpha",
+    "preserveAspectRatio",
+    "preserveAspectRatioString",
+    "pressed",
+    "pressure",
+    "prevValue",
+    "preventDefault",
+    "preventExtensions",
+    "previousElementSibling",
+    "previousNode",
+    "previousPage",
+    "previousScale",
+    "previousSibling",
+    "previousTranslate",
+    "primaryKey",
+    "primitiveType",
+    "primitiveUnits",
+    "principals",
+    "print",
+    "privateKey",
+    "probablySupportsContext",
+    "process",
+    "processIceMessage",
+    "product",
+    "productSub",
+    "profile",
+    "profileEnd",
+    "profiles",
+    "prompt",
+    "properties",
+    "propertyIsEnumerable",
+    "propertyName",
+    "protocol",
+    "protocolLong",
+    "prototype",
+    "pseudoClass",
+    "pseudoElement",
+    "publicId",
+    "publicKey",
+    "published",
+    "push",
+    "pushNotification",
+    "pushState",
+    "put",
+    "putImageData",
+    "quadraticCurveTo",
+    "qualifier",
+    "queryCommandEnabled",
+    "queryCommandIndeterm",
+    "queryCommandState",
+    "queryCommandSupported",
+    "queryCommandText",
+    "queryCommandValue",
+    "querySelector",
+    "querySelectorAll",
+    "quote",
+    "quotes",
+    "r",
+    "r1",
+    "r2",
+    "race",
+    "radiogroup",
+    "radiusX",
+    "radiusY",
+    "random",
+    "range",
+    "rangeCount",
+    "rangeMax",
+    "rangeMin",
+    "rangeOffset",
+    "rangeOverflow",
+    "rangeParent",
+    "rangeUnderflow",
+    "rate",
+    "ratio",
+    "raw",
+    "read",
+    "readAsArrayBuffer",
+    "readAsBinaryString",
+    "readAsBlob",
+    "readAsDataURL",
+    "readAsText",
+    "readOnly",
+    "readPixels",
+    "readReportRequested",
+    "readyState",
+    "reason",
+    "reboot",
+    "receiver",
+    "receivers",
+    "recordNumber",
+    "recordset",
+    "rect",
+    "red",
+    "redirectCount",
+    "redirectEnd",
+    "redirectStart",
+    "reduce",
+    "reduceRight",
+    "reduction",
+    "refDistance",
+    "refX",
+    "refY",
+    "referenceNode",
+    "referrer",
+    "refresh",
+    "region",
+    "regionAnchorX",
+    "regionAnchorY",
+    "regionId",
+    "regions",
+    "register",
+    "registerContentHandler",
+    "registerElement",
+    "registerProtocolHandler",
+    "reject",
+    "rel",
+    "relList",
+    "relatedNode",
+    "relatedTarget",
+    "release",
+    "releaseCapture",
+    "releaseEvents",
+    "releasePointerCapture",
+    "releaseShaderCompiler",
+    "reliable",
+    "reload",
+    "remainingSpace",
+    "remoteDescription",
+    "remove",
+    "removeAllRanges",
+    "removeAttribute",
+    "removeAttributeNS",
+    "removeAttributeNode",
+    "removeBehavior",
+    "removeChild",
+    "removeCue",
+    "removeEventListener",
+    "removeFilter",
+    "removeImport",
+    "removeItem",
+    "removeListener",
+    "removeNamedItem",
+    "removeNamedItemNS",
+    "removeNode",
+    "removeParameter",
+    "removeProperty",
+    "removeRange",
+    "removeRegion",
+    "removeRule",
+    "removeSiteSpecificTrackingException",
+    "removeSourceBuffer",
+    "removeStream",
+    "removeTrack",
+    "removeVariable",
+    "removeWakeLockListener",
+    "removeWebWideTrackingException",
+    "removedNodes",
+    "renderbufferStorage",
+    "renderedBuffer",
+    "renderingMode",
+    "repeat",
+    "replace",
+    "replaceAdjacentText",
+    "replaceChild",
+    "replaceData",
+    "replaceId",
+    "replaceItem",
+    "replaceNode",
+    "replaceState",
+    "replaceTrack",
+    "replaceWholeText",
+    "reportValidity",
+    "requestAnimationFrame",
+    "requestAutocomplete",
+    "requestData",
+    "requestFullscreen",
+    "requestMediaKeySystemAccess",
+    "requestPermission",
+    "requestPointerLock",
+    "requestStart",
+    "requestingWindow",
+    "required",
+    "requiredExtensions",
+    "requiredFeatures",
+    "reset",
+    "resetTransform",
+    "resize",
+    "resizeBy",
+    "resizeTo",
+    "resolve",
+    "response",
+    "responseBody",
+    "responseEnd",
+    "responseStart",
+    "responseText",
+    "responseType",
+    "responseURL",
+    "responseXML",
+    "restore",
+    "result",
+    "resultType",
+    "resume",
+    "returnValue",
+    "rev",
+    "reverse",
+    "reversed",
+    "revocable",
+    "revokeObjectURL",
+    "rgbColor",
+    "right",
+    "rightContext",
+    "rightMargin",
+    "rolloffFactor",
+    "root",
+    "rootElement",
+    "rotate",
+    "rotateAxisAngle",
+    "rotateAxisAngleSelf",
+    "rotateFromVector",
+    "rotateFromVectorSelf",
+    "rotateSelf",
+    "rotation",
+    "rotationRate",
+    "round",
+    "rowIndex",
+    "rowSpan",
+    "rows",
+    "rubyAlign",
+    "rubyOverhang",
+    "rubyPosition",
+    "rules",
+    "runtime",
+    "runtimeStyle",
+    "rx",
+    "ry",
+    "safari",
+    "sampleCoverage",
+    "sampleRate",
+    "sandbox",
+    "save",
+    "scale",
+    "scale3d",
+    "scale3dSelf",
+    "scaleNonUniform",
+    "scaleNonUniformSelf",
+    "scaleSelf",
+    "scheme",
+    "scissor",
+    "scope",
+    "scopeName",
+    "scoped",
+    "screen",
+    "screenBrightness",
+    "screenEnabled",
+    "screenLeft",
+    "screenPixelToMillimeterX",
+    "screenPixelToMillimeterY",
+    "screenTop",
+    "screenX",
+    "screenY",
+    "scripts",
+    "scroll",
+    "scroll-behavior",
+    "scrollAmount",
+    "scrollBehavior",
+    "scrollBy",
+    "scrollByLines",
+    "scrollByPages",
+    "scrollDelay",
+    "scrollHeight",
+    "scrollIntoView",
+    "scrollIntoViewIfNeeded",
+    "scrollLeft",
+    "scrollLeftMax",
+    "scrollMaxX",
+    "scrollMaxY",
+    "scrollTo",
+    "scrollTop",
+    "scrollTopMax",
+    "scrollWidth",
+    "scrollX",
+    "scrollY",
+    "scrollbar3dLightColor",
+    "scrollbarArrowColor",
+    "scrollbarBaseColor",
+    "scrollbarDarkShadowColor",
+    "scrollbarFaceColor",
+    "scrollbarHighlightColor",
+    "scrollbarShadowColor",
+    "scrollbarTrackColor",
+    "scrollbars",
+    "scrolling",
+    "sdp",
+    "sdpMLineIndex",
+    "sdpMid",
+    "seal",
+    "search",
+    "searchBox",
+    "searchBoxJavaBridge_",
+    "searchParams",
+    "sectionRowIndex",
+    "secureConnectionStart",
+    "security",
+    "seed",
+    "seekable",
+    "seeking",
+    "select",
+    "selectAllChildren",
+    "selectNode",
+    "selectNodeContents",
+    "selectNodes",
+    "selectSingleNode",
+    "selectSubString",
+    "selected",
+    "selectedIndex",
+    "selectedOptions",
+    "selectedStyleSheetSet",
+    "selectedStylesheetSet",
+    "selection",
+    "selectionDirection",
+    "selectionEnd",
+    "selectionStart",
+    "selector",
+    "selectorText",
+    "self",
+    "send",
+    "sendAsBinary",
+    "sendBeacon",
+    "sender",
+    "sentTimestamp",
+    "separator",
+    "serializeToString",
+    "serviceWorker",
+    "sessionId",
+    "sessionStorage",
+    "set",
+    "setActive",
+    "setAlpha",
+    "setAttribute",
+    "setAttributeNS",
+    "setAttributeNode",
+    "setAttributeNodeNS",
+    "setBaseAndExtent",
+    "setBingCurrentSearchDefault",
+    "setCapture",
+    "setColor",
+    "setCompositeOperation",
+    "setCurrentTime",
+    "setCustomValidity",
+    "setData",
+    "setDate",
+    "setDragImage",
+    "setEnd",
+    "setEndAfter",
+    "setEndBefore",
+    "setEndPoint",
+    "setFillColor",
+    "setFilterRes",
+    "setFloat32",
+    "setFloat64",
+    "setFloatValue",
+    "setFullYear",
+    "setHours",
+    "setImmediate",
+    "setInt16",
+    "setInt32",
+    "setInt8",
+    "setInterval",
+    "setItem",
+    "setLineCap",
+    "setLineDash",
+    "setLineJoin",
+    "setLineWidth",
+    "setLocalDescription",
+    "setMatrix",
+    "setMatrixValue",
+    "setMediaKeys",
+    "setMilliseconds",
+    "setMinutes",
+    "setMiterLimit",
+    "setMonth",
+    "setNamedItem",
+    "setNamedItemNS",
+    "setNonUserCodeExceptions",
+    "setOrientToAngle",
+    "setOrientToAuto",
+    "setOrientation",
+    "setOverrideHistoryNavigationMode",
+    "setPaint",
+    "setParameter",
+    "setPeriodicWave",
+    "setPointerCapture",
+    "setPosition",
+    "setPreference",
+    "setProperty",
+    "setPrototypeOf",
+    "setRGBColor",
+    "setRGBColorICCColor",
+    "setRadius",
+    "setRangeText",
+    "setRemoteDescription",
+    "setRequestHeader",
+    "setResizable",
+    "setResourceTimingBufferSize",
+    "setRotate",
+    "setScale",
+    "setSeconds",
+    "setSelectionRange",
+    "setServerCertificate",
+    "setShadow",
+    "setSkewX",
+    "setSkewY",
+    "setStart",
+    "setStartAfter",
+    "setStartBefore",
+    "setStdDeviation",
+    "setStringValue",
+    "setStrokeColor",
+    "setSuggestResult",
+    "setTargetAtTime",
+    "setTargetValueAtTime",
+    "setTime",
+    "setTimeout",
+    "setTransform",
+    "setTranslate",
+    "setUTCDate",
+    "setUTCFullYear",
+    "setUTCHours",
+    "setUTCMilliseconds",
+    "setUTCMinutes",
+    "setUTCMonth",
+    "setUTCSeconds",
+    "setUint16",
+    "setUint32",
+    "setUint8",
+    "setUri",
+    "setValueAtTime",
+    "setValueCurveAtTime",
+    "setVariable",
+    "setVelocity",
+    "setVersion",
+    "setYear",
+    "settingName",
+    "settingValue",
+    "sex",
+    "shaderSource",
+    "shadowBlur",
+    "shadowColor",
+    "shadowOffsetX",
+    "shadowOffsetY",
+    "shadowRoot",
+    "shape",
+    "shape-rendering",
+    "shapeRendering",
+    "sheet",
+    "shift",
+    "shiftKey",
+    "shiftLeft",
+    "show",
+    "showHelp",
+    "showModal",
+    "showModalDialog",
+    "showModelessDialog",
+    "showNotification",
+    "sidebar",
+    "sign",
+    "signalingState",
+    "sin",
+    "singleNodeValue",
+    "sinh",
+    "size",
+    "sizeToContent",
+    "sizes",
+    "skewX",
+    "skewXSelf",
+    "skewY",
+    "skewYSelf",
+    "slice",
+    "slope",
+    "small",
+    "smil",
+    "smooth",
+    "smoothingTimeConstant",
+    "snapToLines",
+    "snapshotItem",
+    "snapshotLength",
+    "some",
+    "sort",
+    "source",
+    "sourceBuffer",
+    "sourceBuffers",
+    "sourceIndex",
+    "spacing",
+    "span",
+    "speakAs",
+    "speaking",
+    "specified",
+    "specularConstant",
+    "specularExponent",
+    "speechSynthesis",
+    "speed",
+    "speedOfSound",
+    "spellcheck",
+    "splice",
+    "split",
+    "splitText",
+    "spreadMethod",
+    "sqrt",
+    "src",
+    "srcElement",
+    "srcFilter",
+    "srcUrn",
+    "srcdoc",
+    "srclang",
+    "srcset",
+    "stack",
+    "stackTraceLimit",
+    "stacktrace",
+    "standalone",
+    "standby",
+    "start",
+    "startContainer",
+    "startIce",
+    "startOffset",
+    "startRendering",
+    "startTime",
+    "startsWith",
+    "state",
+    "status",
+    "statusMessage",
+    "statusText",
+    "statusbar",
+    "stdDeviationX",
+    "stdDeviationY",
+    "stencilFunc",
+    "stencilFuncSeparate",
+    "stencilMask",
+    "stencilMaskSeparate",
+    "stencilOp",
+    "stencilOpSeparate",
+    "step",
+    "stepDown",
+    "stepMismatch",
+    "stepUp",
+    "sticky",
+    "stitchTiles",
+    "stop",
+    "stop-color",
+    "stop-opacity",
+    "stopColor",
+    "stopImmediatePropagation",
+    "stopOpacity",
+    "stopPropagation",
+    "storageArea",
+    "storageName",
+    "storageStatus",
+    "storeSiteSpecificTrackingException",
+    "storeWebWideTrackingException",
+    "stpVersion",
+    "stream",
+    "strike",
+    "stringValue",
+    "stringify",
+    "stroke",
+    "stroke-dasharray",
+    "stroke-dashoffset",
+    "stroke-linecap",
+    "stroke-linejoin",
+    "stroke-miterlimit",
+    "stroke-opacity",
+    "stroke-width",
+    "strokeDasharray",
+    "strokeDashoffset",
+    "strokeLinecap",
+    "strokeLinejoin",
+    "strokeMiterlimit",
+    "strokeOpacity",
+    "strokeRect",
+    "strokeStyle",
+    "strokeText",
+    "strokeWidth",
+    "style",
+    "styleFloat",
+    "styleMedia",
+    "styleSheet",
+    "styleSheetSets",
+    "styleSheets",
+    "sub",
+    "subarray",
+    "subject",
+    "submit",
+    "subscribe",
+    "substr",
+    "substring",
+    "substringData",
+    "subtle",
+    "subtree",
+    "suffix",
+    "suffixes",
+    "summary",
+    "sup",
+    "supports",
+    "surfaceScale",
+    "surroundContents",
+    "suspend",
+    "suspendRedraw",
+    "swapCache",
+    "swapNode",
+    "sweepFlag",
+    "symbols",
+    "system",
+    "systemCode",
+    "systemId",
+    "systemLanguage",
+    "systemXDPI",
+    "systemYDPI",
+    "tBodies",
+    "tFoot",
+    "tHead",
+    "tabIndex",
+    "table",
+    "table-layout",
+    "tableLayout",
+    "tableValues",
+    "tag",
+    "tagName",
+    "tagUrn",
+    "tags",
+    "taintEnabled",
+    "takeRecords",
+    "tan",
+    "tanh",
+    "target",
+    "targetElement",
+    "targetTouches",
+    "targetX",
+    "targetY",
+    "tel",
+    "terminate",
+    "test",
+    "texImage2D",
+    "texParameterf",
+    "texParameteri",
+    "texSubImage2D",
+    "text",
+    "text-align",
+    "text-anchor",
+    "text-decoration",
+    "text-decoration-color",
+    "text-decoration-line",
+    "text-decoration-style",
+    "text-indent",
+    "text-overflow",
+    "text-rendering",
+    "text-shadow",
+    "text-transform",
+    "textAlign",
+    "textAlignLast",
+    "textAnchor",
+    "textAutospace",
+    "textBaseline",
+    "textContent",
+    "textDecoration",
+    "textDecorationBlink",
+    "textDecorationColor",
+    "textDecorationLine",
+    "textDecorationLineThrough",
+    "textDecorationNone",
+    "textDecorationOverline",
+    "textDecorationStyle",
+    "textDecorationUnderline",
+    "textIndent",
+    "textJustify",
+    "textJustifyTrim",
+    "textKashida",
+    "textKashidaSpace",
+    "textLength",
+    "textOverflow",
+    "textRendering",
+    "textShadow",
+    "textTracks",
+    "textTransform",
+    "textUnderlinePosition",
+    "then",
+    "threadId",
+    "threshold",
+    "tiltX",
+    "tiltY",
+    "time",
+    "timeEnd",
+    "timeStamp",
+    "timeout",
+    "timestamp",
+    "timestampOffset",
+    "timing",
+    "title",
+    "toArray",
+    "toBlob",
+    "toDataURL",
+    "toDateString",
+    "toElement",
+    "toExponential",
+    "toFixed",
+    "toFloat32Array",
+    "toFloat64Array",
+    "toGMTString",
+    "toISOString",
+    "toJSON",
+    "toLocaleDateString",
+    "toLocaleFormat",
+    "toLocaleLowerCase",
+    "toLocaleString",
+    "toLocaleTimeString",
+    "toLocaleUpperCase",
+    "toLowerCase",
+    "toMethod",
+    "toPrecision",
+    "toSdp",
+    "toSource",
+    "toStaticHTML",
+    "toString",
+    "toStringTag",
+    "toTimeString",
+    "toUTCString",
+    "toUpperCase",
+    "toggle",
+    "toggleLongPressEnabled",
+    "tooLong",
+    "toolbar",
+    "top",
+    "topMargin",
+    "total",
+    "totalFrameDelay",
+    "totalVideoFrames",
+    "touchAction",
+    "touches",
+    "trace",
+    "track",
+    "transaction",
+    "transactions",
+    "transform",
+    "transform-origin",
+    "transform-style",
+    "transformOrigin",
+    "transformPoint",
+    "transformString",
+    "transformStyle",
+    "transformToDocument",
+    "transformToFragment",
+    "transition",
+    "transition-delay",
+    "transition-duration",
+    "transition-property",
+    "transition-timing-function",
+    "transitionDelay",
+    "transitionDuration",
+    "transitionProperty",
+    "transitionTimingFunction",
+    "translate",
+    "translateSelf",
+    "translationX",
+    "translationY",
+    "trim",
+    "trimLeft",
+    "trimRight",
+    "trueSpeed",
+    "trunc",
+    "truncate",
+    "type",
+    "typeDetail",
+    "typeMismatch",
+    "typeMustMatch",
+    "types",
+    "ubound",
+    "undefined",
+    "unescape",
+    "uneval",
+    "unicode-bidi",
+    "unicodeBidi",
+    "uniform1f",
+    "uniform1fv",
+    "uniform1i",
+    "uniform1iv",
+    "uniform2f",
+    "uniform2fv",
+    "uniform2i",
+    "uniform2iv",
+    "uniform3f",
+    "uniform3fv",
+    "uniform3i",
+    "uniform3iv",
+    "uniform4f",
+    "uniform4fv",
+    "uniform4i",
+    "uniform4iv",
+    "uniformMatrix2fv",
+    "uniformMatrix3fv",
+    "uniformMatrix4fv",
+    "unique",
+    "uniqueID",
+    "uniqueNumber",
+    "unitType",
+    "units",
+    "unloadEventEnd",
+    "unloadEventStart",
+    "unlock",
+    "unmount",
+    "unobserve",
+    "unpause",
+    "unpauseAnimations",
+    "unreadCount",
+    "unregister",
+    "unregisterContentHandler",
+    "unregisterProtocolHandler",
+    "unscopables",
+    "unselectable",
+    "unshift",
+    "unsubscribe",
+    "unsuspendRedraw",
+    "unsuspendRedrawAll",
+    "unwatch",
+    "unwrapKey",
+    "update",
+    "updateCommands",
+    "updateIce",
+    "updateInterval",
+    "updateSettings",
+    "updated",
+    "updating",
+    "upload",
+    "upper",
+    "upperBound",
+    "upperOpen",
+    "uri",
+    "url",
+    "urn",
+    "urns",
+    "usages",
+    "useCurrentView",
+    "useMap",
+    "useProgram",
+    "usedSpace",
+    "userAgent",
+    "userLanguage",
+    "username",
+    "v8BreakIterator",
+    "vAlign",
+    "vLink",
+    "valid",
+    "validateProgram",
+    "validationMessage",
+    "validity",
+    "value",
+    "valueAsDate",
+    "valueAsNumber",
+    "valueAsString",
+    "valueInSpecifiedUnits",
+    "valueMissing",
+    "valueOf",
+    "valueText",
+    "valueType",
+    "values",
+    "vector-effect",
+    "vectorEffect",
+    "velocityAngular",
+    "velocityExpansion",
+    "velocityX",
+    "velocityY",
+    "vendor",
+    "vendorSub",
+    "verify",
+    "version",
+    "vertexAttrib1f",
+    "vertexAttrib1fv",
+    "vertexAttrib2f",
+    "vertexAttrib2fv",
+    "vertexAttrib3f",
+    "vertexAttrib3fv",
+    "vertexAttrib4f",
+    "vertexAttrib4fv",
+    "vertexAttribDivisorANGLE",
+    "vertexAttribPointer",
+    "vertical",
+    "vertical-align",
+    "verticalAlign",
+    "verticalOverflow",
+    "vibrate",
+    "videoHeight",
+    "videoTracks",
+    "videoWidth",
+    "view",
+    "viewBox",
+    "viewBoxString",
+    "viewTarget",
+    "viewTargetString",
+    "viewport",
+    "viewportAnchorX",
+    "viewportAnchorY",
+    "viewportElement",
+    "visibility",
+    "visibilityState",
+    "visible",
+    "vlinkColor",
+    "voice",
+    "volume",
+    "vrml",
+    "vspace",
+    "w",
+    "wand",
+    "warn",
+    "wasClean",
+    "watch",
+    "watchPosition",
+    "webdriver",
+    "webkitAddKey",
+    "webkitAnimation",
+    "webkitAnimationDelay",
+    "webkitAnimationDirection",
+    "webkitAnimationDuration",
+    "webkitAnimationFillMode",
+    "webkitAnimationIterationCount",
+    "webkitAnimationName",
+    "webkitAnimationPlayState",
+    "webkitAnimationTimingFunction",
+    "webkitAppearance",
+    "webkitAudioContext",
+    "webkitAudioDecodedByteCount",
+    "webkitAudioPannerNode",
+    "webkitBackfaceVisibility",
+    "webkitBackground",
+    "webkitBackgroundAttachment",
+    "webkitBackgroundClip",
+    "webkitBackgroundColor",
+    "webkitBackgroundImage",
+    "webkitBackgroundOrigin",
+    "webkitBackgroundPosition",
+    "webkitBackgroundPositionX",
+    "webkitBackgroundPositionY",
+    "webkitBackgroundRepeat",
+    "webkitBackgroundSize",
+    "webkitBackingStorePixelRatio",
+    "webkitBorderImage",
+    "webkitBorderImageOutset",
+    "webkitBorderImageRepeat",
+    "webkitBorderImageSlice",
+    "webkitBorderImageSource",
+    "webkitBorderImageWidth",
+    "webkitBoxAlign",
+    "webkitBoxDirection",
+    "webkitBoxFlex",
+    "webkitBoxOrdinalGroup",
+    "webkitBoxOrient",
+    "webkitBoxPack",
+    "webkitBoxSizing",
+    "webkitCancelAnimationFrame",
+    "webkitCancelFullScreen",
+    "webkitCancelKeyRequest",
+    "webkitCancelRequestAnimationFrame",
+    "webkitClearResourceTimings",
+    "webkitClosedCaptionsVisible",
+    "webkitConvertPointFromNodeToPage",
+    "webkitConvertPointFromPageToNode",
+    "webkitCreateShadowRoot",
+    "webkitCurrentFullScreenElement",
+    "webkitCurrentPlaybackTargetIsWireless",
+    "webkitDirectionInvertedFromDevice",
+    "webkitDisplayingFullscreen",
+    "webkitEnterFullScreen",
+    "webkitEnterFullscreen",
+    "webkitExitFullScreen",
+    "webkitExitFullscreen",
+    "webkitExitPointerLock",
+    "webkitFullScreenKeyboardInputAllowed",
+    "webkitFullscreenElement",
+    "webkitFullscreenEnabled",
+    "webkitGenerateKeyRequest",
+    "webkitGetAsEntry",
+    "webkitGetDatabaseNames",
+    "webkitGetEntries",
+    "webkitGetEntriesByName",
+    "webkitGetEntriesByType",
+    "webkitGetFlowByName",
+    "webkitGetGamepads",
+    "webkitGetImageDataHD",
+    "webkitGetNamedFlows",
+    "webkitGetRegionFlowRanges",
+    "webkitGetUserMedia",
+    "webkitHasClosedCaptions",
+    "webkitHidden",
+    "webkitIDBCursor",
+    "webkitIDBDatabase",
+    "webkitIDBDatabaseError",
+    "webkitIDBDatabaseException",
+    "webkitIDBFactory",
+    "webkitIDBIndex",
+    "webkitIDBKeyRange",
+    "webkitIDBObjectStore",
+    "webkitIDBRequest",
+    "webkitIDBTransaction",
+    "webkitImageSmoothingEnabled",
+    "webkitIndexedDB",
+    "webkitInitMessageEvent",
+    "webkitIsFullScreen",
+    "webkitKeys",
+    "webkitLineDashOffset",
+    "webkitLockOrientation",
+    "webkitMatchesSelector",
+    "webkitMediaStream",
+    "webkitNotifications",
+    "webkitOfflineAudioContext",
+    "webkitOrientation",
+    "webkitPeerConnection00",
+    "webkitPersistentStorage",
+    "webkitPointerLockElement",
+    "webkitPostMessage",
+    "webkitPreservesPitch",
+    "webkitPutImageDataHD",
+    "webkitRTCPeerConnection",
+    "webkitRegionOverset",
+    "webkitRequestAnimationFrame",
+    "webkitRequestFileSystem",
+    "webkitRequestFullScreen",
+    "webkitRequestFullscreen",
+    "webkitRequestPointerLock",
+    "webkitResolveLocalFileSystemURL",
+    "webkitSetMediaKeys",
+    "webkitSetResourceTimingBufferSize",
+    "webkitShadowRoot",
+    "webkitShowPlaybackTargetPicker",
+    "webkitSlice",
+    "webkitSpeechGrammar",
+    "webkitSpeechGrammarList",
+    "webkitSpeechRecognition",
+    "webkitSpeechRecognitionError",
+    "webkitSpeechRecognitionEvent",
+    "webkitStorageInfo",
+    "webkitSupportsFullscreen",
+    "webkitTemporaryStorage",
+    "webkitTextSizeAdjust",
+    "webkitTransform",
+    "webkitTransformOrigin",
+    "webkitTransition",
+    "webkitTransitionDelay",
+    "webkitTransitionDuration",
+    "webkitTransitionProperty",
+    "webkitTransitionTimingFunction",
+    "webkitURL",
+    "webkitUnlockOrientation",
+    "webkitUserSelect",
+    "webkitVideoDecodedByteCount",
+    "webkitVisibilityState",
+    "webkitWirelessVideoPlaybackDisabled",
+    "webkitdropzone",
+    "webstore",
+    "weight",
+    "whatToShow",
+    "wheelDelta",
+    "wheelDeltaX",
+    "wheelDeltaY",
+    "which",
+    "white-space",
+    "whiteSpace",
+    "wholeText",
+    "widows",
+    "width",
+    "will-change",
+    "willChange",
+    "willValidate",
+    "window",
+    "withCredentials",
+    "word-break",
+    "word-spacing",
+    "word-wrap",
+    "wordBreak",
+    "wordSpacing",
+    "wordWrap",
+    "wrap",
+    "wrapKey",
+    "write",
+    "writeln",
+    "writingMode",
+    "x",
+    "x1",
+    "x2",
+    "xChannelSelector",
+    "xmlEncoding",
+    "xmlStandalone",
+    "xmlVersion",
+    "xmlbase",
+    "xmllang",
+    "xmlspace",
+    "y",
+    "y1",
+    "y2",
+    "yChannelSelector",
+    "yandex",
+    "z",
+    "z-index",
+    "zIndex",
+    "zoom",
+    "zoomAndPan",
+    "zoomRectScreen"
+]

+ 6 - 0
src/options/Options.ts

@@ -156,6 +156,12 @@ export class Options implements IOptions {
     @IsBoolean()
     public readonly renameGlobals!: boolean;
 
+    /**
+     * @type {boolean}
+     */
+    @IsBoolean()
+    public readonly renameProperties!: boolean;
+
     /**
      * @type {string[]}
      */

+ 1 - 0
src/options/presets/Default.ts

@@ -22,6 +22,7 @@ export const DEFAULT_PRESET: TInputOptions = Object.freeze({
     inputFileName: '',
     log: false,
     renameGlobals: false,
+    renameProperties: false,
     reservedNames: [],
     reservedStrings: [],
     rotateStringArray: true,

+ 1 - 0
src/options/presets/NoCustomNodes.ts

@@ -21,6 +21,7 @@ export const NO_ADDITIONAL_NODES_PRESET: TInputOptions = Object.freeze({
     inputFileName: '',
     log: false,
     renameGlobals: false,
+    renameProperties: false,
     reservedNames: [],
     reservedStrings: [],
     rotateStringArray: false,

+ 13 - 4
test/dev/dev.ts

@@ -7,13 +7,22 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo
 
     let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
         `
-            var foo = 10n;
+            (function () {
+                const foo = {
+                    prop1: 1,
+                    prop2: 2,
+                    calc: function () {
+                        return this.prop1 + this.prop2;
+                    }
+                };
+                
+                console.log(foo.calc());
+            })();
         `,
         {
             ...NO_ADDITIONAL_NODES_PRESET,
-            renameGlobals: true,
-            stringArray: true,
-            stringArrayThreshold: 1
+            compact: false,
+            renameProperties: true
         }
     ).getObfuscatedCode();
 

+ 322 - 0
test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/RenamePropertiesTransformer.spec.ts

@@ -0,0 +1,322 @@
+import { assert } from 'chai';
+
+import { NO_ADDITIONAL_NODES_PRESET } from '../../../../../src/options/presets/NoCustomNodes';
+
+import { IdentifierNamesGenerator } from '../../../../../src/enums/generators/identifier-names-generators/IdentifierNamesGenerator';
+
+import { readFileAsString } from '../../../../helpers/readFileAsString';
+
+import { JavaScriptObfuscator } from '../../../../../src/JavaScriptObfuscatorFacade';
+
+describe('RenamePropertiesTransformer', () => {
+    describe('transformNode', () => {
+        describe('Hexadecimal identifier names generator', () => {
+            describe('Variant #1: base properties rename', () => {
+                const property1RegExp: RegExp = /'(_0x[a-f0-9]{4,6})': *0x1/;
+                const property2RegExp: RegExp = /'(_0x[a-f0-9]{4,6})': *0x2/;
+                const property3RegExp: RegExp = /\['(_0x[a-f0-9]{4,6})']: *0x3/;
+                const property4RegExp: RegExp = /\[hawk]: *0x4/;
+
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/base.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            renameProperties: true,
+                            identifierNamesGenerator: IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('Match #1: should rename property', () => {
+                    assert.match(obfuscatedCode, property1RegExp);
+                });
+
+                it('Match #2: should rename property', () => {
+                    assert.match(obfuscatedCode, property2RegExp);
+                });
+
+                it('Match #3: should rename property', () => {
+                    assert.match(obfuscatedCode, property3RegExp);
+                });
+
+                it('Match #4: should rename property', () => {
+                    assert.match(obfuscatedCode, property4RegExp);
+                });
+            });
+        });
+
+        describe('Mangled identifier names generator', () => {
+            describe('Variant #1: base properties mangle', () => {
+                const property1RegExp: RegExp = /'a': *0x1/;
+                const property2RegExp: RegExp = /'b': *0x2/;
+                const property3RegExp: RegExp = /\['c']: *0x3/;
+                const property4RegExp: RegExp = /\[hawk]: *0x4/;
+
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/base.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            renameProperties: true,
+                            identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('Match #1: should rename property', () => {
+                    assert.match(obfuscatedCode, property1RegExp);
+                });
+
+                it('Match #2: should rename property', () => {
+                    assert.match(obfuscatedCode, property2RegExp);
+                });
+
+                it('Match #3: should rename property', () => {
+                    assert.match(obfuscatedCode, property3RegExp);
+                });
+
+                it('Match #4: should rename property', () => {
+                    assert.match(obfuscatedCode, property4RegExp);
+                });
+            });
+
+            describe('Variant #2: base properties rename with rename globals', () => {
+                const variable1RegExp: RegExp = /const d *= *'hawk'/;
+                const variable2RegExp: RegExp = /const e *= *{/;
+                const property1RegExp: RegExp = /'a': *0x1/;
+                const property2RegExp: RegExp = /'b': *0x2/;
+                const property3RegExp: RegExp = /\['c']: *0x3/;
+                const property4RegExp: RegExp = /\[d]: *0x4/;
+
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/base.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            renameProperties: true,
+                            identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator,
+                            renameGlobals: true
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('Match #1: should rename variable name', () => {
+                    assert.match(obfuscatedCode, variable1RegExp);
+                });
+
+                it('Match #2: should rename variable name', () => {
+                    assert.match(obfuscatedCode, variable2RegExp);
+                });
+
+                it('Match #3: should rename property', () => {
+                    assert.match(obfuscatedCode, property1RegExp);
+                });
+
+                it('Match #4: should rename property', () => {
+                    assert.match(obfuscatedCode, property2RegExp);
+                });
+
+                it('Match #5: should rename property', () => {
+                    assert.match(obfuscatedCode, property3RegExp);
+                });
+
+                it('Match #6: should rename property', () => {
+                    assert.match(obfuscatedCode, property4RegExp);
+                });
+            });
+
+            describe('Variant #3: properties rename of nested objects', () => {
+                const regExp: RegExp = new RegExp('' +
+                    'const foo *= *{' +
+                        '\'a\': *{' +
+                            '\'b\': *0x1' +
+                        '}' +
+                    '};' +
+                    'const bar *= *foo\\[\'a\']\\[\'b\'];' +
+                '');
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/nested-objects.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            renameProperties: true,
+                            identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('Should rename property', () => {
+                    assert.match(obfuscatedCode, regExp);
+                });
+            });
+
+            describe('Variant #4: properties rename of rest element', () => {
+                const regExp: RegExp = new RegExp('' +
+                    'const foo *= *{' +
+                        '\'a\': *0x1' +
+                    '};' +
+                    'const \\{a: *bar} *= *foo;' +
+                    'const baz *= *bar;' +
+                '');
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/rest-element.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            renameProperties: true,
+                            identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('Should rename property', () => {
+                    assert.match(obfuscatedCode, regExp);
+                });
+            });
+
+            describe('Variant #5: reserved dom properties', () => {
+                const regExp: RegExp = new RegExp('' +
+                    'const foo *= *{' +
+                        '\'a\': *0x1,' +
+                        '\'join\': *0x2,' +
+                        '\'b\': *0x3,' +
+                        '\'c\': *0x4' +
+                    '};' +
+                    'const baz *= *foo\\[\'a\'] *\\+ *foo\\[\'join\'] *\\+ *foo\\[\'b\'] *\\+ *foo\\[\'c\'];' +
+                '');
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/reserved-properties.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            renameProperties: true,
+                            identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('Should rename non-reserved properties', () => {
+                    assert.match(obfuscatedCode, regExp);
+                });
+            });
+
+            describe('Variant #6: reserved names properties', () => {
+                const regExp: RegExp = new RegExp('' +
+                    'const foo *= *{' +
+                        '\'a\': *0x1,' +
+                        '\'join\': *0x2,' +
+                        '\'reserved\': *0x3,' +
+                        '\'private_\': *0x4' +
+                    '};' +
+                    'const baz *= *foo\\[\'a\'] *\\+ *foo\\[\'join\'] *\\+ *foo\\[\'reserved\'] *\\+ *foo\\[\'private_\'];' +
+                '');
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/reserved-properties.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            renameProperties: true,
+                            identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator,
+                            reservedNames: ['^reserved$', '_$']
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('Should rename non-reserved properties', () => {
+                    assert.match(obfuscatedCode, regExp);
+                });
+            });
+
+            describe('Variant #7: class methods', () => {
+                const regExp: RegExp = new RegExp('' +
+                    'class Foo *{' +
+                        '\\[\'a\'] *\\(\\) *{}' +
+                    '}' +
+                    'const foo *= *new Foo\\(\\);' +
+                    'foo\\[\'a\']\\(\\);' +
+                '');
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/class-methods.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            renameProperties: true,
+                            identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator,
+                            reservedNames: ['^reserved$', '_$']
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('Should rename class method name', () => {
+                    assert.match(obfuscatedCode, regExp);
+                });
+            });
+
+            describe('Variant #8: integration with `splitStrings` option', () => {
+                const propertyRegExp: RegExp = /'a': *'long' *\+ *'Prop' *\+ *'erty' *\+ *'Valu' *\+ *'e'/;
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/split-strings-integration.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            renameProperties: true,
+                            identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator,
+                            splitStrings: true,
+                            splitStringsChunkLength: 4
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('Should rename property before `splitStrings` option will applied', () => {
+                    assert.match(obfuscatedCode, propertyRegExp);
+                });
+            });
+        });
+    });
+});

+ 7 - 0
test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/base.js

@@ -0,0 +1,7 @@
+const hawk = 'hawk';
+const foo = {
+    bar: 1,
+    'baz': 2,
+    ['bark']: 3,
+    [hawk]: 4
+};

+ 5 - 0
test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/class-methods.js

@@ -0,0 +1,5 @@
+class Foo {
+    bar () {}
+}
+const foo = new Foo();
+foo.bar();

+ 6 - 0
test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/nested-objects.js

@@ -0,0 +1,6 @@
+const foo = {
+    bar: {
+        'baz': 1
+    }
+};
+const bar = foo.bar['baz'];

+ 7 - 0
test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/reserved-properties.js

@@ -0,0 +1,7 @@
+const foo = {
+    bar: 1,
+    join: 2,
+    reserved: 3,
+    private_: 4
+};
+const baz = foo.bar + foo.join + foo.reserved + foo.private_;

+ 5 - 0
test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/rest-element.js

@@ -0,0 +1,5 @@
+const foo = {
+    bar: 1
+};
+const {bar} = foo;
+const baz = bar;

+ 3 - 0
test/functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/fixtures/split-strings-integration.js

@@ -0,0 +1,3 @@
+const foo = {
+    longPropertyName: 'longPropertyValue'
+};

+ 2 - 1
test/index.spec.ts

@@ -89,6 +89,7 @@ import './functional-tests/node-transformers/converting-transformers/object-expr
 import './functional-tests/node-transformers/converting-transformers/split-string-transformer/SplitStringTransformer.spec';
 import './functional-tests/node-transformers/converting-transformers/template-literal-transformer/TemplateLiteralTransformer.spec';
 import './functional-tests/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.spec';
+import './functional-tests/node-transformers/initializing-transformers/comments-transformer/CommentsTransformer.spec';
 import './functional-tests/node-transformers/obfuscating-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec';
 import './functional-tests/node-transformers/obfuscating-transformers/literal-transformer/LiteralTransformer.spec';
 import './functional-tests/node-transformers/obfuscating-transformers/scope-identifiers-transformer/catch-clause/CatchClause.spec';
@@ -100,11 +101,11 @@ import './functional-tests/node-transformers/obfuscating-transformers/scope-iden
 import './functional-tests/node-transformers/obfuscating-transformers/scope-identifiers-transformer/variable-declaration/VariableDeclaration.spec';
 import './functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.spec';
 import './functional-tests/node-transformers/preparing-transformers/eval-call-expression-transformer/EvalCallExpressionTransformer.spec';
-import './functional-tests/node-transformers/initializing-transformers/comments-transformer/CommentsTransformer.spec';
 import './functional-tests/node-transformers/preparing-transformers/obfuscating-guards/black-list-obfuscating-guard/BlackListObfuscatingGuard.spec';
 import './functional-tests/node-transformers/preparing-transformers/obfuscating-guards/conditional-comment-obfuscating-guard/ConditionalCommentObfuscatingGuard.spec';
 import './functional-tests/node-transformers/preparing-transformers/obfuscating-guards/reserved-string-obfuscating-guard/ReservedStringObfuscatingGuard.spec';
 import './functional-tests/node-transformers/preparing-transformers/variable-preserve-transformer/VariablePreserveTransformer.spec';
+import './functional-tests/node-transformers/rename-properties-transformers/rename-properties-transformer/RenamePropertiesTransformer.spec';
 import './functional-tests/options/OptionsNormalizer.spec';
 import './functional-tests/options/domain-lock/Validation.spec';
 import './functional-tests/storages/string-array-storage/StringArrayStorage.spec';

+ 8 - 4
test/runtime-tests/JavaScriptObfuscatorRuntime.spec.ts

@@ -25,6 +25,7 @@ describe('JavaScriptObfuscator runtime eval', function () {
         debugProtection: true,
         disableConsoleOutput: true,
         domainLock: ['obfuscator.io'],
+        renameProperties: true,
         reservedNames: ['generate', 'sha256'],
         rotateStringArray: true,
         selfDefending: true,
@@ -67,7 +68,8 @@ describe('JavaScriptObfuscator runtime eval', function () {
                     code,
                     {
                         ...baseOptions,
-                        ...options
+                        ...options,
+                        renameProperties: false
                     }
                 ).getObfuscatedCode();
 
@@ -167,7 +169,7 @@ describe('JavaScriptObfuscator runtime eval', function () {
         });
 
         describe(`Obfuscator. ${detailedDescription}`, () => {
-            const evaluationTimeout: number = 10000;
+            const evaluationTimeout: number = 50000;
 
             let evaluationResult: string;
 
@@ -178,7 +180,8 @@ describe('JavaScriptObfuscator runtime eval', function () {
                     code,
                     {
                         ...baseOptions,
-                        ...options
+                        ...options,
+                        renameProperties: false
                     }
                 ).getObfuscatedCode();
 
@@ -248,7 +251,8 @@ describe('JavaScriptObfuscator runtime eval', function () {
                         {
                             ...baseOptions,
                             ...options,
-                            ...webpackBootstrapOptions
+                            ...webpackBootstrapOptions,
+                            reservedNames: ['^foo$']
                         }
                     ).getObfuscatedCode();
 

+ 1 - 0
tsconfig.json

@@ -8,6 +8,7 @@
     ],
     "target": "es2017",
     "module": "commonjs",
+    "resolveJsonModule": true,
     "esModuleInterop": true,
     "noImplicitThis": false,
     "noUnusedLocals": true,

+ 44 - 30
yarn.lock

@@ -340,10 +340,10 @@
   resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
   integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
 
-"@types/[email protected].0":
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-1.0.0.tgz#16ce0eabe4a9a3afe64557ad0ee6886ec3d32927"
-  integrity sha512-ONFY9//bCEr3DWKON3iDv/Q8LXnhaYYaNDeFSN0AtO5o4sLf9F0pstJKKKjQhXE0kJEeHs8eR6SAsROhhc2Csw==
+"@types/[email protected].1":
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-1.0.1.tgz#0930b948914a78587de35458b86c907b6e98bbf6"
+  integrity sha512-HkGSK7CGAXncr8Qn/0VqNtExEE+PHMWb+qlR1faHMao7ng6P3tAaoWWBMdva0gL5h4zprjIO89GJOLXsMcDm1Q==
   dependencies:
     "@types/node" "*"
 
@@ -364,10 +364,10 @@
   resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d"
   integrity sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA==
 
-"@types/[email protected]0":
-  version "14.0.10"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.10.tgz#dbfaa170bd9eafccccb6d7060743a761b0844afd"
-  integrity sha512-Bz23oN/5bi0rniKT24ExLf4cK0JdvN3dH/3k0whYkdN4eI4vS2ZW/2ENNn2uxHCzWcbdHIa/GRuWQytfzCjRYw==
+"@types/[email protected]1":
+  version "14.0.11"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.11.tgz#61d4886e2424da73b7b25547f59fdcb534c165a3"
+  integrity sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg==
 
 "@types/normalize-package-data@^2.4.0":
   version "2.4.0"
@@ -613,7 +613,7 @@ acorn-jsx@^5.2.0:
   resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
   integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
 
[email protected]:
[email protected], acorn@^7.2.0:
   version "7.2.0"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe"
   integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==
@@ -1338,10 +1338,10 @@ commander@^2.20.0:
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
   integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
 
-comment-parser@^0.7.4:
-  version "0.7.4"
-  resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.4.tgz#f5eb83cbae323cae6533c057f41d52692361c83a"
-  integrity sha512-Nnl77/mt6sj1BiYSVMeMWzvD0183F2MFOJyFRmZHimUVDYS9J40AvXpiFA7RpU5pQH+HkvYc0dnsHpwW2xmbyQ==
+comment-parser@^0.7.5:
+  version "0.7.5"
+  resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.5.tgz#06db157a3b34addf8502393743e41897e2c73059"
+  integrity sha512-iH9YA35ccw94nx5244GVkpyC9eVTsL71jZz6iz5w6RIf79JLF2AsXHXq9p6Oaohyl3sx5qSMnGsWUDFIAfWL4w==
 
 commondir@^1.0.1:
   version "1.0.1"
@@ -1847,12 +1847,12 @@ [email protected]:
     read-pkg-up "^2.0.0"
     resolve "^1.12.0"
 
[email protected].3:
-  version "27.0.3"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-27.0.3.tgz#8dade43cc61cf220c72709477456c6437a7bcf8e"
-  integrity sha512-TWagiFwWFAq1rkl4cuoh6JHD7qAYCuYEinZe6Rxnfu7FvoxRnAMAu6zswADIzQXHoK2c+ueTDOKAQSHII0ttHg==
[email protected].4:
+  version "27.0.4"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-27.0.4.tgz#70bc0041ed170432b9ba46cc081b8eabfb5a2eb8"
+  integrity sha512-gRjtUngFu3j5fwHAi4HHECIT7sDyD0IS1K59+PAg1+Wn/aXCMV+fKkoy1r5ezwBU4hkHxuvq8tOaTTvFNFvjbA==
   dependencies:
-    comment-parser "^0.7.4"
+    comment-parser "^0.7.5"
     debug "^4.1.1"
     jsdoctypeparser "^6.1.0"
     lodash "^4.17.15"
@@ -1889,7 +1889,7 @@ [email protected]:
     safe-regex "^2.1.1"
     semver "^7.3.2"
 
[email protected]:
[email protected], eslint-scope@^5.1.0:
   version "5.1.0"
   resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5"
   integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==
@@ -1934,10 +1934,15 @@ eslint-visitor-keys@^1.1.0:
   resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
   integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
 
[email protected]:
-  version "7.1.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.1.0.tgz#d9a1df25e5b7859b0a3d86bb05f0940ab676a851"
-  integrity sha512-DfS3b8iHMK5z/YLSme8K5cge168I8j8o1uiVmFCgnnjxZQbCGyraF8bMl7Ju4yfBmCuxD7shOF7eqGkcuIHfsA==
+eslint-visitor-keys@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz#74415ac884874495f78ec2a97349525344c981fa"
+  integrity sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ==
+
[email protected]:
+  version "7.2.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.2.0.tgz#d41b2e47804b30dbabb093a967fb283d560082e6"
+  integrity sha512-B3BtEyaDKC5MlfDa2Ha8/D6DsS4fju95zs0hjS3HdGazw+LNayai38A25qMppK37wWGWNYSPOR6oYzlz5MHsRQ==
   dependencies:
     "@babel/code-frame" "^7.0.0"
     ajv "^6.10.0"
@@ -1945,10 +1950,10 @@ [email protected]:
     cross-spawn "^7.0.2"
     debug "^4.0.1"
     doctrine "^3.0.0"
-    eslint-scope "^5.0.0"
+    eslint-scope "^5.1.0"
     eslint-utils "^2.0.0"
-    eslint-visitor-keys "^1.1.0"
-    espree "^7.0.0"
+    eslint-visitor-keys "^1.2.0"
+    espree "^7.1.0"
     esquery "^1.2.0"
     esutils "^2.0.2"
     file-entry-cache "^5.0.1"
@@ -1990,6 +1995,15 @@ espree@^7.0.0:
     acorn-jsx "^5.2.0"
     eslint-visitor-keys "^1.1.0"
 
+espree@^7.1.0:
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/espree/-/espree-7.1.0.tgz#a9c7f18a752056735bf1ba14cb1b70adc3a5ce1c"
+  integrity sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==
+  dependencies:
+    acorn "^7.2.0"
+    acorn-jsx "^5.2.0"
+    eslint-visitor-keys "^1.2.0"
+
 esprima@^4.0.0, esprima@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
@@ -5327,10 +5341,10 @@ typedarray@^0.0.6:
   resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
   integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
 
[email protected].3:
-  version "3.9.3"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a"
-  integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==
[email protected].5:
+  version "3.9.5"
+  resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.5.tgz#586f0dba300cde8be52dd1ac4f7e1009c1b13f36"
+  integrity sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==
 
 union-value@^1.0.0:
   version "1.0.1"

Some files were not shown because too many files changed in this diff