Repository: webpack-contrib/css-loader
Pull request #1115 (2020-07-20 18:49:02)

Refactor code main
<!--
  HOLY CRAP a Pull Request. We ❤️ those!

  If you remove or skip this template, you'll make the 🐼 sad and the mighty god
  of Github will appear and pile-drive the close button from a great height
  while making animal noises.

  Please place an x (no spaces!) in all [ ] that apply
-->

This PR contains a:

- [x] **bugfix**
- [ ] new **feature**
- [x] **code refactor**
- [x] **test update** <!-- if bug or feature is checked, this should be too -->
- [ ] **typo fix**
- [x] **metadata update**

### Motivation / Use-Case

big refactor + tests + fixes

### Breaking Changes

Yes, with inline syntax works 

### Additional Info

No

codecov[bot]: # [Codecov](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115?src=pr&el=h1) Report
> Merging [#1115](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115?src=pr&el=desc) into [master](https://codecov.io/gh/webpack-contrib/css-loader/commit/a5c1b5ff5fb1cf2fc899e03b1c4d774f1190839b&el=desc) will **decrease** coverage by `0.32%`.
> The diff coverage is `99.66%`.

[![Impacted file tree graph](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115/graphs/tree.svg?width=650&height=150&src=pr&token=DlN3OQ0JnO)](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #1115      +/-   ##
==========================================
- Coverage   99.82%   99.50%   -0.33%     
==========================================
  Files          10       10              
  Lines         586      606      +20     
  Branches      177      188      +11     
==========================================
+ Hits          585      603      +18     
- Misses          1        3       +2     
```


| [Impacted Files](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/utils.js](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115/diff?src=pr&el=tree#diff-c3JjL3V0aWxzLmpz) | `98.76% <98.68%> (-0.76%)` | :arrow_down: |
| [src/index.js](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115/diff?src=pr&el=tree#diff-c3JjL2luZGV4Lmpz) | `100.00% <100.00%> (ø)` | |
| [src/plugins/postcss-icss-parser.js](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115/diff?src=pr&el=tree#diff-c3JjL3BsdWdpbnMvcG9zdGNzcy1pY3NzLXBhcnNlci5qcw==) | `100.00% <100.00%> (ø)` | |
| [src/plugins/postcss-import-parser.js](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115/diff?src=pr&el=tree#diff-c3JjL3BsdWdpbnMvcG9zdGNzcy1pbXBvcnQtcGFyc2VyLmpz) | `100.00% <100.00%> (ø)` | |
| [src/plugins/postcss-url-parser.js](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115/diff?src=pr&el=tree#diff-c3JjL3BsdWdpbnMvcG9zdGNzcy11cmwtcGFyc2VyLmpz) | `100.00% <100.00%> (ø)` | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115?src=pr&el=footer). Last update [a5c1b5f...f3c58f8](https://codecov.io/gh/webpack-contrib/css-loader/pull/1115?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


Patch:
diff --git a/.gitignore b/.gitignore
index 5721cf2..d81a67f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,5 +16,3 @@ Thumbs.db
 .vscode
 *.sublime-project
 *.sublime-workspace
-/test/fixtures/import/import-absolute.css
-/test/fixtures/url/url-absolute.css
diff --git a/src/index.js b/src/index.js
index 3aa747e..d7e75f8 100644
--- a/src/index.js
+++ b/src/index.js
@@ -13,7 +13,10 @@ import Warning from './Warning';
 import schema from './options.json';
 import { icssParser, importParser, urlParser } from './plugins';
 import {
-  getModulesOptions,
+  normalizeOptions,
+  shouldUseModulesPlugins,
+  shouldUseImportPlugin,
+  shouldUseURLPlugin,
   getPreRequester,
   getExportCode,
   getFilter,
@@ -21,61 +24,44 @@ import {
   getModuleCode,
   getModulesPlugins,
   normalizeSourceMap,
-  shouldUseModulesPlugins,
-  isUrlRequestable,
+  sortImports,
 } from './utils';
 
-export default function loader(content, map, meta) {
-  const options = getOptions(this);
+export default async function loader(content, map, meta) {
+  const rawOptions = getOptions(this);
 
-  validateOptions(schema, options, {
+  validateOptions(schema, rawOptions, {
     name: 'CSS Loader',
     baseDataPath: 'options',
   });
 
-  const sourceMap =
-    typeof options.sourceMap === 'boolean' ? options.sourceMap : this.sourceMap;
   const plugins = [];
+  const options = normalizeOptions(rawOptions, this);
 
-  const exportType = options.onlyLocals ? 'locals' : 'full';
-  const preRequester = getPreRequester(this);
-  const urlHandler = (url) =>
-    stringifyRequest(this, preRequester(options.importLoaders) + url);
-
-  const esModule =
-    typeof options.esModule !== 'undefined' ? options.esModule : true;
-
-  let modulesOptions;
-
-  if (shouldUseModulesPlugins(options.modules, this.resourcePath)) {
-    modulesOptions = getModulesOptions(options, this);
-
-    if (modulesOptions.namedExport === true && esModule === false) {
-      this.emitError(
-        new Error(
-          '`Options.module.namedExport` cannot be used without `options.esModule`'
-        )
-      );
-    }
-
-    plugins.push(...getModulesPlugins(modulesOptions, this));
-
+  if (shouldUseModulesPlugins(options)) {
     const icssResolver = this.getResolve({
       mainFields: ['css', 'style', 'main', '...'],
       mainFiles: ['index', '...'],
+      extensions: [],
+      conditionNames: ['style'],
     });
 
     plugins.push(
+      ...getModulesPlugins(options, this),
       icssParser({
         context: this.context,
         rootContext: this.rootContext,
         resolver: icssResolver,
-        urlHandler,
+        urlHandler: (url) =>
+          stringifyRequest(
+            this,
+            getPreRequester(this)(options.importLoaders) + url
+          ),
       })
     );
   }
 
-  if (options.import !== false && exportType === 'full') {
+  if (shouldUseImportPlugin(options)) {
     const resolver = this.getResolve({
       mainFields: ['css', 'style', 'main', '...'],
       mainFiles: ['index', '...'],
@@ -90,24 +76,27 @@ export default function loader(content, map, meta) {
         rootContext: this.rootContext,
         filter: getFilter(options.import, this.resourcePath),
         resolver,
-        urlHandler,
+        urlHandler: (url) =>
+          stringifyRequest(
+            this,
+            getPreRequester(this)(options.importLoaders) + url
+          ),
       })
     );
   }
 
-  if (options.url !== false && exportType === 'full') {
+  if (shouldUseURLPlugin(options)) {
     const urlResolver = this.getResolve({
       mainFields: ['asset'],
       conditionNames: ['asset'],
+      extensions: [],
     });
 
     plugins.push(
       urlParser({
         context: this.context,
         rootContext: this.rootContext,
-        filter: getFilter(options.url, this.resourcePath, (value) =>
-          isUrlRequestable(value)
-        ),
+        filter: getFilter(options.url, this.resourcePath),
         resolver: urlResolver,
         urlHandler: (url) => stringifyRequest(this, url),
       })
@@ -130,107 +119,76 @@ export default function loader(content, map, meta) {
 
   const callback = this.async();
 
-  postcss(plugins)
-    .process(content, {
+  let result;
+
+  try {
+    result = await postcss(plugins).process(content, {
       from: this.resourcePath,
       to: this.resourcePath,
       map: options.sourceMap
         ? {
             // Some loaders (example `"postcss-loader": "1.x.x"`) always generates source map, we should remove it
-            prev: sourceMap && map ? normalizeSourceMap(map) : null,
+            prev: map ? normalizeSourceMap(map) : null,
             inline: false,
             annotation: false,
           }
         : false,
-    })
-    .then((result) => {
-      for (const warning of result.warnings()) {
-        this.emitWarning(new Warning(warning));
-      }
-
-      const imports = [];
-      const apiImports = [];
-      const urlReplacements = [];
-      const icssReplacements = [];
-      const exports = [];
-
-      for (const message of result.messages) {
-        // eslint-disable-next-line default-case
-        switch (message.type) {
-          case 'import':
-            imports.push(message.value);
-            break;
-          case 'api-import':
-            apiImports.push(message.value);
-            break;
-          case 'url-replacement':
-            urlReplacements.push(message.value);
-            break;
-          case 'icss-replacement':
-            icssReplacements.push(message.value);
-            break;
-          case 'export':
-            exports.push(message.value);
-            break;
-        }
-      }
-
-      /*
-       *   Order
-       *   CSS_LOADER_ICSS_IMPORT: [],
-       *   CSS_LOADER_AT_RULE_IMPORT: [],
-       *   CSS_LOADER_GET_URL_IMPORT: [],
-       *   CSS_LOADER_URL_IMPORT: [],
-       *   CSS_LOADER_URL_REPLACEMENT: [],
-       * */
-
-      imports.sort((a, b) => {
-        return (
-          (b.order < a.order) - (a.order < b.order) ||
-          (b.index < a.index) - (a.index < b.index)
-        );
-      });
-      apiImports.sort((a, b) => {
-        return (
-          (b.order < a.order) - (a.order < b.order) ||
-          (b.index < a.index) - (a.index < b.index)
-        );
-      });
-
-      const importCode = getImportCode(
-        this,
-        exportType,
-        imports,
-        esModule,
-        modulesOptions
-      );
-      const moduleCode = getModuleCode(
-        result,
-        exportType,
-        sourceMap,
-        apiImports,
-        urlReplacements,
-        icssReplacements,
-        esModule,
-        modulesOptions
-      );
-      const exportCode = getExportCode(
-        exports,
-        exportType,
-        icssReplacements,
-        esModule,
-        modulesOptions
-      );
-
-      return callback(null, `${importCode}${moduleCode}${exportCode}`);
-    })
-    .catch((error) => {
-      if (error.file) {
-        this.addDependency(error.file);
-      }
-
-      callback(
-        error.name === 'CssSyntaxError' ? new CssSyntaxError(error) : error
-      );
     });
+  } catch (error) {
+    if (error.file) {
+      this.addDependency(error.file);
+    }
+
+    callback(
+      error.name === 'CssSyntaxError' ? new CssSyntaxError(error) : error
+    );
+
+    return;
+  }
+
+  for (const warning of result.warnings()) {
+    this.emitWarning(new Warning(warning));
+  }
+
+  const imports = [];
+  const apiImports = [];
+  const urlReplacements = [];
+  const icssReplacements = [];
+  const exports = [];
+
+  for (const message of result.messages) {
+    // eslint-disable-next-line default-case
+    switch (message.type) {
+      case 'import':
+        imports.push(message.value);
+        break;
+      case 'api-import':
+        apiImports.push(message.value);
+        break;
+      case 'url-replacement':
+        urlReplacements.push(message.value);
+        break;
+      case 'icss-replacement':
+        icssReplacements.push(message.value);
+        break;
+      case 'export':
+        exports.push(message.value);
+        break;
+    }
+  }
+
+  imports.sort(sortImports);
+  apiImports.sort(sortImports);
+
+  const importCode = getImportCode(this, imports, options);
+  const moduleCode = getModuleCode(
+    result,
+    apiImports,
+    urlReplacements,
+    icssReplacements,
+    options
+  );
+  const exportCode = getExportCode(exports, icssReplacements, options);
+
+  callback(null, `${importCode}${moduleCode}${exportCode}`);
 }
diff --git a/src/plugins/postcss-icss-parser.js b/src/plugins/postcss-icss-parser.js
index bc80062..df24aa9 100644
--- a/src/plugins/postcss-icss-parser.js
+++ b/src/plugins/postcss-icss-parser.js
@@ -1,147 +1,95 @@
 import postcss from 'postcss';
 import { extractICSS, replaceValueSymbols, replaceSymbols } from 'icss-utils';
 
-import { normalizeUrl, resolveRequests, isUrlRequestable } from '../utils';
+import { normalizeUrl, resolveRequests, requestify } from '../utils';
 
-function makeRequestableIcssImports(icssImports, rootContext) {
-  return Object.keys(icssImports).reduce((accumulator, url) => {
-    const tokensMap = icssImports[url];
-    const tokens = Object.keys(tokensMap);
-
-    if (tokens.length === 0) {
-      return accumulator;
-    }
-
-    const isRequestable = isUrlRequestable(url);
-
-    let normalizedUrl;
+export default postcss.plugin(
+  'postcss-icss-parser',
+  (options) => async (css, result) => {
+    const importReplacements = Object.create(null);
+    const { icssImports, icssExports } = extractICSS(css);
+    const imports = new Map();
+    const tasks = [];
+
+    // eslint-disable-next-line guard-for-in
+    for (const url in icssImports) {
+      const tokens = icssImports[url];
+
+      if (Object.keys(tokens).length === 0) {
+        // eslint-disable-next-line no-continue
+        continue;
+      }
 
-    if (isRequestable) {
-      normalizedUrl = normalizeUrl(url, true, rootContext);
-    }
+      const request = requestify(normalizeUrl(url, true), options.rootContext);
+      const doResolve = async () => {
+        const { resolver, context } = options;
+        const resolvedUrl = await resolveRequests(resolver, context, [
+          ...new Set([url, request]),
+        ]);
 
-    const key = typeof normalizedUrl !== 'undefined' ? normalizedUrl : url;
-
-    if (!accumulator[key]) {
-      // eslint-disable-next-line no-param-reassign
-      accumulator[key] = { url, tokenMap: tokensMap };
-    } else {
-      // eslint-disable-next-line no-param-reassign
-      accumulator[key] = {
-        url,
-        tokenMap: {
-          ...accumulator[key].tokenMap,
-          ...tokensMap,
-        },
+        return { url: resolvedUrl, tokens };
       };
-    }
 
-    return accumulator;
-  }, {});
-}
+      tasks.push(doResolve());
+    }
 
-export default postcss.plugin(
-  'postcss-icss-parser',
-  (options) => (css, result) => {
-    return new Promise(async (resolve, reject) => {
-      const importReplacements = Object.create(null);
-      const extractedICSS = extractICSS(css);
-      const icssImports = makeRequestableIcssImports(
-        extractedICSS.icssImports,
-        options.rootContext
-      );
-
-      const tasks = [];
-
-      let index = 0;
-
-      for (const [importIndex, normalizedUrl] of Object.keys(
-        icssImports
-      ).entries()) {
-        const { url } = icssImports[normalizedUrl];
-
-        index += 1;
-
-        tasks.push(
-          Promise.resolve(index).then(async (currentIndex) => {
-            const importName = `___CSS_LOADER_ICSS_IMPORT_${importIndex}___`;
-            const { resolver, context } = options;
-
-            let resolvedUrl;
-
-            try {
-              resolvedUrl = await resolveRequests(resolver, context, [
-                ...new Set([normalizedUrl, url]),
-              ]);
-            } catch (error) {
-              throw error;
-            }
-
-            result.messages.push(
-              {
-                type: 'import',
-                value: {
-                  // 'CSS_LOADER_ICSS_IMPORT'
-                  order: 0,
-                  icss: true,
-                  importName,
-                  url: options.urlHandler(resolvedUrl),
-                  index: currentIndex,
-                },
-              },
-              {
-                type: 'api-import',
-                value: {
-                  // 'CSS_LOADER_ICSS_IMPORT'
-                  order: 0,
-                  type: 'internal',
-                  importName,
-                  dedupe: true,
-                  index: currentIndex,
-                },
-              }
-            );
-
-            const { tokenMap } = icssImports[normalizedUrl];
-            const tokens = Object.keys(tokenMap);
-
-            for (const [replacementIndex, token] of tokens.entries()) {
-              const replacementName = `___CSS_LOADER_ICSS_IMPORT_${importIndex}_REPLACEMENT_${replacementIndex}___`;
-              const localName = tokenMap[token];
-
-              importReplacements[token] = replacementName;
-
-              result.messages.push({
-                type: 'icss-replacement',
-                value: { replacementName, importName, localName },
-              });
-            }
-          })
+    const results = await Promise.all(tasks);
+
+    for (let index = 0; index <= results.length - 1; index++) {
+      const { url, tokens } = results[index];
+
+      const importKey = url;
+      let importName = imports.get(importKey);
+
+      if (!importName) {
+        importName = `___CSS_LOADER_ICSS_IMPORT_${imports.size}___`;
+        imports.set(importKey, importName);
+
+        result.messages.push(
+          {
+            type: 'import',
+            value: {
+              importName,
+              url: options.urlHandler(url),
+              icss: true,
+              order: 0,
+              index,
+            },
+          },
+          {
+            type: 'api-import',
+            value: {
+              type: 'internal',
+              importName,
+              dedupe: true,
+              order: 0,
+              index,
+            },
+          }
         );
       }
 
-      try {
-        await Promise.all(tasks);
-      } catch (error) {
-        reject(error);
-      }
+      for (const [replacementIndex, token] of Object.keys(tokens).entries()) {
+        const replacementName = `___CSS_LOADER_ICSS_IMPORT_${index}_REPLACEMENT_${replacementIndex}___`;
+        const localName = tokens[token];
 
-      if (Object.keys(importReplacements).length > 0) {
-        replaceSymbols(css, importReplacements);
-      }
+        importReplacements[token] = replacementName;
 
-      const { icssExports } = extractedICSS;
+        result.messages.push({
+          type: 'icss-replacement',
+          value: { replacementName, importName, localName },
+        });
+      }
+    }
 
-      for (const name of Object.keys(icssExports)) {
-        const value = replaceValueSymbols(
-          icssExports[name],
-          importReplacements
-        );
+    if (Object.keys(importReplacements).length > 0) {
+      replaceSymbols(css, importReplacements);
+    }
 
-        result.messages.push({ type: 'export', value: { name, value } });
-      }
+    for (const name of Object.keys(icssExports)) {
+      const value = replaceValueSymbols(icssExports[name], importReplacements);
 
-      resolve();
-    });
+      result.messages.push({ type: 'export', value: { name, value } });
+    }
   }
 );
diff --git a/src/plugins/postcss-import-parser.js b/src/plugins/postcss-import-parser.js
index 2f262f7..71dc394 100644
--- a/src/plugins/postcss-import-parser.js
+++ b/src/plugins/postcss-import-parser.js
@@ -1,42 +1,60 @@
+import { promisify } from 'util';
+
 import postcss from 'postcss';
 import valueParser from 'postcss-value-parser';
 
-import { normalizeUrl, resolveRequests, isUrlRequestable } from '../utils';
+import {
+  normalizeUrl,
+  resolveRequests,
+  isUrlRequestable,
+  requestify,
+} from '../utils';
 
 const pluginName = 'postcss-import-parser';
 
-export default postcss.plugin(pluginName, (options) => (css, result) => {
-  return new Promise((resolve, reject) => {
-    const importsMap = new Map();
-    const tasks = [];
-
-    // A counter is used instead of an index in callback css.walkAtRules because we mutate AST (atRule.remove())
-    let index = 0;
-
-    css.walkAtRules(/^import$/i, (atRule) => {
-      // Convert only top-level @import
-      if (atRule.parent.type !== 'root') {
-        return;
-      }
-
-      // Nodes do not exists - `@import url('http://') :root {}`
-      if (atRule.nodes) {
-        result.warn(
-          "It looks like you didn't end your @import statement correctly. Child nodes are attached to it.",
-          { node: atRule }
-        );
+function walkAtRules(css, result, options, callback) {
+  const accumulator = [];
 
-        return;
-      }
+  css.walkAtRules(/^import$/i, (atRule) => {
+    // Convert only top-level @import
+    if (atRule.parent.type !== 'root') {
+      return;
+    }
 
-      const { nodes } = valueParser(atRule.params);
+    // Nodes do not exists - `@import url('http://') :root {}`
+    if (atRule.nodes) {
+      result.warn(
+        "It looks like you didn't end your @import statement correctly. Child nodes are attached to it.",
+        { node: atRule }
+      );
 
-      // No nodes - `@import ;`
-      // Invalid type - `@import foo-bar;`
-      if (
-        nodes.length === 0 ||
-        (nodes[0].type !== 'string' && nodes[0].type !== 'function')
-      ) {
+      return;
+    }
+
+    const { nodes: paramsNodes } = valueParser(atRule.params);
+
+    // No nodes - `@import ;`
+    // Invalid type - `@import foo-bar;`
+    if (
+      paramsNodes.length === 0 ||
+      (paramsNodes[0].type !== 'string' && paramsNodes[0].type !== 'function')
+    ) {
+      result.warn(`Unable to find uri in "${atRule.toString()}"`, {
+        node: atRule,
+      });
+
+      return;
+    }
+
+    let isStringValue;
+    let url;
+
+    if (paramsNodes[0].type === 'string') {
+      isStringValue = true;
+      url = paramsNodes[0].value;
+    } else {
+      // Invalid function - `@import nourl(test.css);`
+      if (paramsNodes[0].value.toLowerCase() !== 'url') {
         result.warn(`Unable to find uri in "${atRule.toString()}"`, {
           node: atRule,
         });
@@ -44,139 +62,149 @@ export default postcss.plugin(pluginName, (options) => (css, result) => {
         return;
       }
 
-      let isStringValue;
-      let url;
-
-      if (nodes[0].type === 'string') {
-        isStringValue = true;
-        url = nodes[0].value;
-      } else {
-        // Invalid function - `@import nourl(test.css);`
-        if (nodes[0].value.toLowerCase() !== 'url') {
-          result.warn(`Unable to find uri in "${atRule.toString()}"`, {
-            node: atRule,
-          });
-
-          return;
-        }
-
-        isStringValue =
-          nodes[0].nodes.length !== 0 && nodes[0].nodes[0].type === 'string';
-        url = isStringValue
-          ? nodes[0].nodes[0].value
-          : valueParser.stringify(nodes[0].nodes);
-      }
+      isStringValue =
+        paramsNodes[0].nodes.length !== 0 &&
+        paramsNodes[0].nodes[0].type === 'string';
+      url = isStringValue
+        ? paramsNodes[0].nodes[0].value
+        : valueParser.stringify(paramsNodes[0].nodes);
+    }
+
+    // Empty url - `@import "";` or `@import url();`
+    if (url.trim().length === 0) {
+      result.warn(`Unable to find uri in "${atRule.toString()}"`, {
+        node: atRule,
+      });
+
+      return;
+    }
+
+    accumulator.push({
+      atRule,
+      url,
+      isStringValue,
+      mediaNodes: paramsNodes.slice(1),
+    });
+  });
 
-      // Empty url - `@import "";` or `@import url();`
-      if (url.trim().length === 0) {
-        result.warn(`Unable to find uri in "${atRule.toString()}"`, {
-          node: atRule,
-        });
+  callback(null, accumulator);
+}
 
-        return;
-      }
+const asyncWalkAtRules = promisify(walkAtRules);
 
-      let normalizedUrl;
+export default postcss.plugin(pluginName, (options) => async (css, result) => {
+  const parsedResults = await asyncWalkAtRules(css, result, options);
 
-      const isRequestable = isUrlRequestable(url);
+  if (parsedResults.length === 0) {
+    return Promise.resolve();
+  }
 
-      if (isRequestable) {
-        normalizedUrl = normalizeUrl(url, isStringValue, options.rootContext);
+  const imports = new Map();
+  const tasks = [];
 
-        // Empty url after normalize - `@import '\
-        // \
-        // \
-        // ';
-        if (normalizedUrl.trim().length === 0) {
-          result.warn(`Unable to find uri in "${atRule.toString()}"`, {
-            node: atRule,
-          });
+  for (const parsedResult of parsedResults) {
+    const { atRule, url, isStringValue, mediaNodes } = parsedResult;
 
-          return;
-        }
-      }
+    let normalizedUrl = url;
+    let prefix = '';
 
-      const media = valueParser.stringify(nodes.slice(1)).trim().toLowerCase();
+    const queryParts = normalizedUrl.split('!');
 
-      if (
-        options.filter &&
-        !options.filter({ url: normalizedUrl || url, media })
-      ) {
-        return;
+    if (queryParts.length > 1) {
+      normalizedUrl = queryParts.pop();
+      prefix = queryParts.join('!');
+    }
+
+    const isRequestable = isUrlRequestable(normalizedUrl);
+
+    if (isRequestable) {
+      normalizedUrl = normalizeUrl(normalizedUrl, isStringValue);
+
+      // Empty url after normalize - `@import '\
+      // \
+      // \
+      // ';
+      if (normalizedUrl.trim().length === 0) {
+        result.warn(`Unable to find uri in "${atRule.toString()}"`, {
+          node: atRule,
+        });
+
+        // eslint-disable-next-line no-continue
+        continue;
+      }
+    }
+
+    let media;
+
+    if (mediaNodes.length > 0) {
+      media = valueParser.stringify(mediaNodes).trim().toLowerCase();
+    }
+
+    if (options.filter && !options.filter({ url: normalizedUrl, media })) {
+      // eslint-disable-next-line no-continue
+      continue;
+    }
+
+    atRule.remove();
+
+    if (isRequestable) {
+      const request = requestify(normalizedUrl, options.rootContext);
+      const doResolve = async () => {
+        const { resolver, context } = options;
+        const resolvedUrl = await resolveRequests(resolver, context, [
+          ...new Set([request, normalizedUrl]),
+        ]);
+
+        return { url: resolvedUrl, media, prefix, isRequestable };
+      };
+
+      tasks.push(doResolve());
+    } else {
+      tasks.push({ url, media, prefix, isRequestable });
+    }
+  }
+
+  const results = await Promise.all(tasks);
+
+  for (let index = 0; index <= results.length - 1; index++) {
+    const { url, isRequestable, media } = results[index];
+
+    if (isRequestable) {
+      const { prefix } = results[index];
+      const newUrl = prefix ? `${prefix}!${url}` : url;
+      const importKey = prefix ? newUrl : url;
+      let importName = imports.get(importKey);
+
+      if (!importName) {
+        importName = `___CSS_LOADER_AT_RULE_IMPORT_${imports.size}___`;
+        imports.set(importKey, importName);
+
+        result.messages.push({
+          type: 'import',
+          value: {
+            order: 1,
+            importName,
+            url: options.urlHandler(newUrl),
+            index,
+          },
+        });
       }
 
-      atRule.remove();
-
-      index += 1;
-
-      tasks.push(
-        Promise.resolve(index).then(async (currentIndex) => {
-          if (isRequestable) {
-            const importKey = normalizedUrl;
-            let importName = importsMap.get(importKey);
-
-            if (!importName) {
-              importName = `___CSS_LOADER_AT_RULE_IMPORT_${importsMap.size}___`;
-              importsMap.set(importKey, importName);
-
-              const { resolver, context } = options;
-
-              let resolvedUrl;
-
-              try {
-                resolvedUrl = await resolveRequests(resolver, context, [
-                  ...new Set([normalizedUrl, url]),
-                ]);
-              } catch (error) {
-                throw error;
-              }
-
-              result.messages.push({
-                type: 'import',
-                value: {
-                  // 'CSS_LOADER_AT_RULE_IMPORT'
-                  order: 1,
-                  importName,
-                  url: options.urlHandler(resolvedUrl),
-                  index: currentIndex,
-                },
-              });
-            }
-
-            result.messages.push({
-              type: 'api-import',
-              value: {
-                // 'CSS_LOADER_AT_RULE_IMPORT'
-                order: 1,
-                type: 'internal',
-                importName,
-                media,
-                index: currentIndex,
-              },
-            });
-
-            return;
-          }
-
-          result.messages.push({
-            pluginName,
-            type: 'api-import',
-            value: {
-              // 'CSS_LOADER_AT_RULE_IMPORT'
-              order: 1,
-              type: 'external',
-              url,
-              media,
-              index: currentIndex,
-            },
-          });
-        })
-      );
+      result.messages.push({
+        type: 'api-import',
+        value: { order: 1, type: 'internal', importName, media, index },
+      });
+
+      // eslint-disable-next-line no-continue
+      continue;
+    }
+
+    result.messages.push({
+      pluginName,
+      type: 'api-import',
+      value: { order: 1, type: 'external', url, media, index },
     });
+  }
 
-    Promise.all(tasks).then(
-      () => resolve(),
-      (error) => reject(error)
-    );
-  });
+  return Promise.resolve();
 });
diff --git a/src/plugins/postcss-url-parser.js b/src/plugins/postcss-url-parser.js
index ae8a746..61d6b46 100644
--- a/src/plugins/postcss-url-parser.js
+++ b/src/plugins/postcss-url-parser.js
@@ -3,7 +3,12 @@ import { promisify } from 'util';
 import postcss from 'postcss';
 import valueParser from 'postcss-value-parser';
 
-import { normalizeUrl, resolveRequests } from '../utils';
+import {
+  normalizeUrl,
+  requestify,
+  resolveRequests,
+  isUrlRequestable,
+} from '../utils';
 
 const pluginName = 'postcss-url-parser';
 
@@ -11,13 +16,11 @@ const isUrlFunc = /url/i;
 const isImageSetFunc = /^(?:-webkit-)?image-set$/i;
 const needParseDecl = /(?:url|(?:-webkit-)?image-set)\(/i;
 
-const walkCssAsync = promisify(walkCss);
-
 function getNodeFromUrlFunc(node) {
   return node.nodes && node.nodes[0];
 }
 
-function ruleValidate(rule, decl, result, options) {
+function shouldHandleRule(rule, decl, result) {
   // https://www.w3.org/TR/css-syntax-3/#typedef-url-token
   if (rule.url.replace(/^[\s]+|[\s]+$/g, '').length === 0) {
     result.warn(`Unable to find uri in '${decl.toString()}'`, { node: decl });
@@ -25,10 +28,6 @@ function ruleValidate(rule, decl, result, options) {
     return false;
   }
 
-  if (options.filter && !options.filter(rule.url)) {
-    return false;
-  }
-
   return true;
 }
 
@@ -61,7 +60,7 @@ function walkCss(css, result, options, callback) {
           isStringValue,
         };
 
-        if (ruleValidate(rule, decl, result, options)) {
+        if (shouldHandleRule(rule, decl, result)) {
           accumulator.push({
             decl,
             rule,
@@ -72,9 +71,7 @@ function walkCss(css, result, options, callback) {
         // Do not traverse inside `url`
         // eslint-disable-next-line consistent-return
         return false;
-      }
-
-      if (isImageSetFunc.test(node.value)) {
+      } else if (isImageSetFunc.test(node.value)) {
         for (const nNode of node.nodes) {
           const { type, value } = nNode;
 
@@ -93,16 +90,14 @@ function walkCss(css, result, options, callback) {
               isStringValue,
             };
 
-            if (ruleValidate(rule, decl, result, options)) {
+            if (shouldHandleRule(rule, decl, result)) {
               accumulator.push({
                 decl,
                 rule,
                 parsed,
               });
             }
-          }
-
-          if (type === 'string') {
+          } else if (type === 'string') {
             const rule = {
               node: nNode,
               url: value,
@@ -110,7 +105,7 @@ function walkCss(css, result, options, callback) {
               isStringValue: true,
             };
 
-            if (ruleValidate(rule, decl, result, options)) {
+            if (shouldHandleRule(rule, decl, result)) {
               accumulator.push({
                 decl,
                 rule,
@@ -130,145 +125,134 @@ function walkCss(css, result, options, callback) {
   callback(null, accumulator);
 }
 
-export default postcss.plugin(pluginName, (options) => (css, result) => {
-  return new Promise(async (resolve, reject) => {
-    const importsMap = new Map();
-    const replacementsMap = new Map();
-    const urlToHelper = require.resolve('../runtime/getUrl.js');
-
-    const parsedResults = await walkCssAsync(css, result, options);
+const asyncWalkCss = promisify(walkCss);
 
-    if (parsedResults.length === 0) {
-      resolve();
+export default postcss.plugin(pluginName, (options) => async (css, result) => {
+  const parsedResults = await asyncWalkCss(css, result, options);
 
-      return;
-    }
-
-    const tasks = [];
-
-    let index = 0;
-    let hasHelper = false;
-
-    for (const parsedResult of parsedResults) {
-      index += 1;
+  if (parsedResults.length === 0) {
+    return Promise.resolve();
+  }
 
-      if (!hasHelper) {
-        result.messages.push({
-          pluginName,
-          type: 'import',
-          value: {
-            // 'CSS_LOADER_GET_URL_IMPORT'
-            order: 2,
-            importName: '___CSS_LOADER_GET_URL_IMPORT___',
-            url: options.urlHandler(urlToHelper),
-            index,
-          },
-        });
+  const tasks = [];
+  const imports = new Map();
+  const replacements = new Map();
 
-        hasHelper = true;
-      }
+  let hasUrlImportHelper = false;
 
-      const { decl, rule } = parsedResult;
-      const { node, url, needQuotes, isStringValue } = rule;
-      const splittedUrl = url.split(/(\?)?#/);
-      const [urlWithoutHash, singleQuery, hashValue] = splittedUrl;
+  for (const parsedResult of parsedResults) {
+    const { url, isStringValue } = parsedResult.rule;
 
-      let hash = singleQuery ? '?' : '';
-      hash += hashValue ? `#${hashValue}` : '';
+    let normalizedUrl = url;
+    let prefix = '';
 
-      let normalizedUrl = normalizeUrl(
-        urlWithoutHash,
-        isStringValue,
-        options.rootContext
-      );
+    const queryParts = normalizedUrl.split('!');
 
-      let prefixSuffix = '';
+    if (queryParts.length > 1) {
+      normalizedUrl = queryParts.pop();
+      prefix = queryParts.join('!');
+    }
 
-      const queryParts = normalizedUrl.split('!');
+    normalizedUrl = normalizeUrl(normalizedUrl, isStringValue);
 
-      if (queryParts.length > 1) {
-        normalizedUrl = queryParts.pop();
-        prefixSuffix = queryParts.join('!');
-      }
+    if (!isUrlRequestable(normalizedUrl)) {
+      // eslint-disable-next-line no-continue
+      continue;
+    }
 
-      const importKey = normalizedUrl;
+    if (!options.filter(normalizedUrl)) {
+      // eslint-disable-next-line no-continue
+      continue;
+    }
 
-      let importName = importsMap.get(importKey);
+    if (!hasUrlImportHelper) {
+      result.messages.push({
+        pluginName,
+        type: 'import',
+        value: {
+          order: 2,
+          importName: '___CSS_LOADER_GET_URL_IMPORT___',
+          url: options.urlHandler(require.resolve('../runtime/getUrl.js')),
+          index: 1,
+        },
+      });
 
-      if (!importName) {
-        importName = `___CSS_LOADER_URL_IMPORT_${importsMap.size}___`;
-        importsMap.set(importKey, importName);
+      hasUrlImportHelper = true;
+    }
 
-        tasks.push(
-          Promise.resolve(index).then(async (currentIndex) => {
-            const { resolver, context } = options;
+    const splittedUrl = normalizedUrl.split(/(\?)?#/);
+    const [pathname, query, hashOrQuery] = splittedUrl;
 
-            let resolvedUrl;
+    let hash = query ? '?' : '';
+    hash += hashOrQuery ? `#${hashOrQuery}` : '';
 
-            try {
-              resolvedUrl = await resolveRequests(resolver, context, [
-                ...new Set([normalizedUrl, url]),
-              ]);
-            } catch (error) {
-              throw error;
-            }
+    const request = requestify(pathname, options.rootContext);
+    const doResolve = async () => {
+      const { resolver, context } = options;
+      const resolvedUrl = await resolveRequests(resolver, context, [
+        ...new Set([request, normalizedUrl]),
+      ]);
 
-            if (prefixSuffix) {
-              resolvedUrl = `${prefixSuffix}!${resolvedUrl}`;
-            }
+      return { url: resolvedUrl, prefix, hash, parsedResult };
+    };
 
-            result.messages.push({
-              pluginName,
-              type: 'import',
-              value: {
-                // 'CSS_LOADER_URL_IMPORT'
-                order: 3,
-                importName,
-                url: options.urlHandler(resolvedUrl),
-                index: currentIndex,
-              },
-            });
-          })
-        );
-      }
+    tasks.push(doResolve());
+  }
 
-      const replacementKey = JSON.stringify({
-        importKey,
-        hash,
-        needQuotes,
+  const results = await Promise.all(tasks);
+
+  for (let index = 0; index <= results.length - 1; index++) {
+    const {
+      url,
+      prefix,
+      hash,
+      parsedResult: { decl, rule, parsed },
+    } = results[index];
+    const newUrl = prefix ? `${prefix}!${url}` : url;
+    const importKey = newUrl;
+    let importName = imports.get(importKey);
+
+    if (!importName) {
+      importName = `___CSS_LOADER_URL_IMPORT_${imports.size}___`;
+      imports.set(importKey, importName);
+
+      result.messages.push({
+        pluginName,
+        type: 'import',
+        value: { importName, url: options.urlHandler(newUrl), index, order: 3 },
       });
-      let replacementName = replacementsMap.get(replacementKey);
-
-      if (!replacementName) {
-        replacementName = `___CSS_LOADER_URL_REPLACEMENT_${replacementsMap.size}___`;
-        replacementsMap.set(replacementKey, replacementName);
-
-        result.messages.push({
-          pluginName,
-          type: 'url-replacement',
-          value: {
-            // 'CSS_LOADER_URL_REPLACEMENT'
-            order: 4,
-            replacementName,
-            importName,
-            hash,
-            needQuotes,
-            index,
-          },
-        });
-      }
+    }
 
-      // eslint-disable-next-line no-param-reassign
-      node.type = 'word';
-      // eslint-disable-next-line no-param-reassign
-      node.value = replacementName;
-      // eslint-disable-next-line no-param-reassign
-      decl.value = parsedResult.parsed.toString();
+    const { needQuotes } = rule;
+    const replacementKey = JSON.stringify({ newUrl, hash, needQuotes });
+    let replacementName = replacements.get(replacementKey);
+
+    if (!replacementName) {
+      replacementName = `___CSS_LOADER_URL_REPLACEMENT_${replacements.size}___`;
+      replacements.set(replacementKey, replacementName);
+
+      result.messages.push({
+        pluginName,
+        type: 'url-replacement',
+        value: {
+          replacementName,
+          importName,
+          hash,
+          needQuotes,
+          index,
+          order: 4,
+        },
+      });
     }
 
-    Promise.all(tasks).then(
-      () => resolve(),
-      (error) => reject(error)
-    );
-  });
+    // eslint-disable-next-line no-param-reassign
+    rule.node.type = 'word';
+    // eslint-disable-next-line no-param-reassign
+    rule.node.value = replacementName;
+
+    // eslint-disable-next-line no-param-reassign
+    decl.value = parsed.toString();
+  }
+
+  return Promise.resolve();
 });
diff --git a/src/utils.js b/src/utils.js
index f420c96..2d0bbe6 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -78,28 +78,24 @@ function getLocalIdent(loaderContext, localIdentName, localName, options) {
   ).replace(/\\\[local\\\]/gi, localName);
 }
 
-function normalizeUrl(url, isStringValue, rootContext) {
+function normalizeUrl(url, isStringValue) {
   let normalizedUrl = url;
 
   if (isStringValue && /\\[\n]/.test(normalizedUrl)) {
     normalizedUrl = normalizedUrl.replace(/\\[\n]/g, '');
   }
 
-  if (matchNativeWin32Path.test(normalizedUrl)) {
-    return normalizedUrl;
-  }
+  return decodeURIComponent(unescape(normalizedUrl));
+}
 
-  return mayBeServerRelativeUrl(normalizedUrl)
-    ? urlToRequest(decodeURIComponent(unescape(normalizedUrl)), rootContext)
-    : urlToRequest(decodeURIComponent(unescape(normalizedUrl)));
+function requestify(url, rootContext) {
+  return mayBeServerRelativeUrl(url)
+    ? urlToRequest(url, rootContext)
+    : urlToRequest(url);
 }
 
-function getFilter(filter, resourcePath, defaultFilter = null) {
+function getFilter(filter, resourcePath) {
   return (item) => {
-    if (defaultFilter && !defaultFilter(item)) {
-      return false;
-    }
-
     if (typeof filter === 'function') {
       return filter(item, resourcePath);
     }
@@ -108,35 +104,15 @@ function getFilter(filter, resourcePath, defaultFilter = null) {
   };
 }
 
-function shouldUseModulesPlugins(modules, resourcePath) {
-  if (typeof modules === 'undefined') {
+function getModulesOptions(rawOptions, loaderContext) {
+  if (typeof rawOptions.modules === 'undefined') {
     return false;
   }
 
-  if (typeof modules === 'boolean') {
-    return modules;
-  }
-
-  if (typeof modules === 'string') {
-    return true;
-  }
-
-  if (typeof modules.auto === 'boolean') {
-    return modules.auto ? /\.module\.\w+$/i.test(resourcePath) : false;
-  }
-
-  if (modules.auto instanceof RegExp) {
-    return modules.auto.test(resourcePath);
-  }
-
-  if (typeof modules.auto === 'function') {
-    return modules.auto(resourcePath);
+  if (typeof rawOptions.modules === 'boolean' && rawOptions.modules === false) {
+    return false;
   }
 
-  return true;
-}
-
-function getModulesOptions(options, loaderContext) {
   let modulesOptions = {
     mode: 'local',
     localIdentName: '[hash:base64]',
@@ -150,59 +126,141 @@ function getModulesOptions(options, loaderContext) {
   };
 
   if (
-    typeof options.modules === 'boolean' ||
-    typeof options.modules === 'string'
+    typeof rawOptions.modules === 'boolean' ||
+    typeof rawOptions.modules === 'string'
   ) {
     modulesOptions.mode =
-      typeof options.modules === 'string' ? options.modules : 'local';
+      typeof rawOptions.modules === 'string' ? rawOptions.modules : 'local';
   } else {
-    modulesOptions = { ...modulesOptions, ...options.modules };
+    const { resourcePath } = loaderContext;
+
+    if (typeof rawOptions.modules.auto === 'boolean') {
+      const isModules =
+        rawOptions.modules.auto && /\.module\.\w+$/i.test(resourcePath);
+
+      if (!isModules) {
+        return false;
+      }
+    } else if (rawOptions.modules.auto instanceof RegExp) {
+      const isModules = rawOptions.modules.auto.test(resourcePath);
+
+      if (!isModules) {
+        return false;
+      }
+    } else if (typeof rawOptions.modules.auto === 'function') {
+      const isModule = rawOptions.modules.auto(resourcePath);
+
+      if (!isModule) {
+        return false;
+      }
+    }
+
+    modulesOptions = { ...modulesOptions, ...rawOptions.modules };
   }
 
   if (typeof modulesOptions.mode === 'function') {
     modulesOptions.mode = modulesOptions.mode(loaderContext.resourcePath);
   }
 
+  if (modulesOptions.namedExport === true && rawOptions.esModule === false) {
+    loaderContext.emitError(
+      new Error(
+        '`Options.module.namedExport` cannot be used without `options.esModule`'
+      )
+    );
+  }
+
   return modulesOptions;
 }
 
-function getModulesPlugins(modulesOptions, loaderContext) {
+function normalizeOptions(rawOptions, loaderContext) {
+  return {
+    url: typeof rawOptions.url === 'undefined' ? true : rawOptions.url,
+    import: typeof rawOptions.import === 'undefined' ? true : rawOptions.import,
+    modules: getModulesOptions(rawOptions, loaderContext),
+    sourceMap:
+      typeof rawOptions.sourceMap === 'boolean'
+        ? rawOptions.sourceMap
+        : loaderContext.sourceMap,
+    importLoaders: rawOptions.importLoaders,
+    onlyLocals:
+      typeof rawOptions.onlyLocals !== 'undefined'
+        ? rawOptions.onlyLocals
+        : false,
+    esModule:
+      typeof rawOptions.esModule === 'undefined' ? true : rawOptions.esModule,
+  };
+}
+
+function shouldUseImportPlugin(options) {
+  if (options.onlyLocals) {
+    return false;
+  }
+
+  if (typeof options.import === 'boolean') {
+    return options.import;
+  }
+
+  return true;
+}
+
+function shouldUseURLPlugin(options) {
+  if (options.onlyLocals) {
+    return false;
+  }
+
+  if (typeof options.url === 'boolean') {
+    return options.url;
+  }
+
+  return true;
+}
+
+function shouldUseModulesPlugins(options) {
+  return Boolean(options.modules);
+}
+
+function getModulesPlugins(options, loaderContext) {
   let plugins = [];
 
   try {
     plugins = [
       modulesValues,
-      localByDefault({ mode: modulesOptions.mode }),
+      localByDefault({ mode: options.modules.mode }),
       extractImports(),
       modulesScope({
         generateScopedName: function generateScopedName(exportName) {
-          let localIdent = modulesOptions.getLocalIdent(
-            loaderContext,
-            modulesOptions.localIdentName,
-            exportName,
-            {
-              context: modulesOptions.context,
-              hashPrefix: modulesOptions.hashPrefix,
-              regExp: modulesOptions.localIdentRegExp,
-            }
-          );
+          let localIdent;
+
+          if (options.modules.getLocalIdent) {
+            localIdent = options.modules.getLocalIdent(
+              loaderContext,
+              options.modules.localIdentName,
+              exportName,
+              {
+                context: options.modules.context,
+                hashPrefix: options.modules.hashPrefix,
+                regExp: options.modules.localIdentRegExp,
+              }
+            );
+          }
 
           if (!localIdent) {
             localIdent = getLocalIdent(
               loaderContext,
-              modulesOptions.localIdentName,
+              options.modules.localIdentName,
               exportName,
               {
-                context: modulesOptions.context,
-                hashPrefix: modulesOptions.hashPrefix,
-                regExp: modulesOptions.localIdentRegExp,
+                context: options.modules.context,
+                hashPrefix: options.modules.hashPrefix,
+                regExp: options.modules.localIdentRegExp,
               }
             );
           }
 
           return localIdent;
         },
-        exportGlobals: modulesOptions.exportGlobals,
+        exportGlobals: options.modules.exportGlobals,
       }),
     ];
   } catch (error) {
@@ -265,22 +323,16 @@ function getPreRequester({ loaders, loaderIndex }) {
   };
 }
 
-function getImportCode(
-  loaderContext,
-  exportType,
-  imports,
-  esModule,
-  modulesOptions
-) {
+function getImportCode(loaderContext, imports, options) {
   let code = '';
 
-  if (exportType === 'full') {
+  if (options.onlyLocals !== true) {
     const apiUrl = stringifyRequest(
       loaderContext,
       require.resolve('./runtime/api')
     );
 
-    code += esModule
+    code += options.esModule
       ? `import ___CSS_LOADER_API_IMPORT___ from ${apiUrl};\n`
       : `var ___CSS_LOADER_API_IMPORT___ = require(${apiUrl});\n`;
   }
@@ -288,8 +340,8 @@ function getImportCode(
   for (const item of imports) {
     const { importName, url, icss } = item;
 
-    code += esModule
-      ? icss && modulesOptions.namedExport
+    code += options.esModule
+      ? icss && options.modules.namedExport
         ? `import ${importName}, * as ${importName}_NAMED___ from ${url};\n`
         : `import ${importName} from ${url};\n`
       : `var ${importName} = require(${url});\n`;
@@ -300,22 +352,19 @@ function getImportCode(
 
 function getModuleCode(
   result,
-  exportType,
-  sourceMap,
   apiImports,
   urlReplacements,
   icssReplacements,
-  esModule,
-  modulesOptions
+  options
 ) {
-  if (exportType !== 'full') {
+  if (options.onlyLocals === true) {
     return 'var ___CSS_LOADER_EXPORT___ = {};\n';
   }
 
   const { css, map } = result;
-  const sourceMapValue = sourceMap && map ? `,${map}` : '';
+  const sourceMapValue = options.sourceMap && map ? `,${map}` : '';
   let code = JSON.stringify(css);
-  let beforeCode = `var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(${sourceMap});\n`;
+  let beforeCode = `var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(${options.sourceMap});\n`;
 
   for (const item of apiImports) {
     const { type, media, dedupe } = item;
@@ -351,7 +400,7 @@ function getModuleCode(
     const { replacementName, importName, localName } = replacement;
 
     code = code.replace(new RegExp(replacementName, 'g'), () =>
-      modulesOptions.namedExport
+      options.modules.namedExport
         ? `" + ${importName}_NAMED___[${JSON.stringify(
             camelCase(localName)
           )}] + "`
@@ -368,13 +417,7 @@ function dashesCamelCase(str) {
   );
 }
 
-function getExportCode(
-  exports,
-  exportType,
-  icssReplacements,
-  esModule,
-  modulesOptions
-) {
+function getExportCode(exports, icssReplacements, options) {
   let code = '';
   let localsCode = '';
   let namedCode = '';
@@ -386,7 +429,7 @@ function getExportCode(
 
     localsCode += `\t${JSON.stringify(name)}: ${JSON.stringify(value)}`;
 
-    if (modulesOptions.namedExport) {
+    if (options.modules.namedExport) {
       namedCode += `export const ${camelCase(name)} = ${JSON.stringify(
         value
       )};\n`;
@@ -394,7 +437,7 @@ function getExportCode(
   };
 
   for (const { name, value } of exports) {
-    switch (modulesOptions.localsConvention) {
+    switch (options.modules.localsConvention) {
       case 'camelCase': {
         addExportToLocalsCode(name, value);
 
@@ -438,7 +481,7 @@ function getExportCode(
       () => `" + ${importName}.locals[${JSON.stringify(localName)}] + "`
     );
 
-    if (modulesOptions.namedExport) {
+    if (options.modules.namedExport) {
       namedCode = namedCode.replace(
         new RegExp(replacementName, 'g'),
         () =>
@@ -456,7 +499,7 @@ function getExportCode(
   }
 
   code += `${
-    esModule ? 'export default' : 'module.exports ='
+    options.esModule ? 'export default' : 'module.exports ='
   } ___CSS_LOADER_EXPORT___;\n`;
 
   return `// Exports\n${code}`;
@@ -490,6 +533,10 @@ function mayBeServerRelativeUrl(url) {
 }
 
 function isUrlRequestable(url) {
+  if (matchNativeWin32Path.test(url)) {
+    return false;
+  }
+
   if (mayBeServerRelativeUrl(url)) {
     return true;
   }
@@ -497,8 +544,20 @@ function isUrlRequestable(url) {
   return isUrlRequest(url);
 }
 
+function sortImports(a, b) {
+  return (
+    (b.order < a.order) - (a.order < b.order) ||
+    (b.index < a.index) - (a.index < b.index)
+  );
+}
+
 export {
+  normalizeOptions,
+  shouldUseModulesPlugins,
+  shouldUseImportPlugin,
+  shouldUseURLPlugin,
   normalizeUrl,
+  requestify,
   getFilter,
   getModulesOptions,
   getModulesPlugins,
@@ -507,7 +566,7 @@ export {
   getImportCode,
   getModuleCode,
   getExportCode,
-  shouldUseModulesPlugins,
   resolveRequests,
   isUrlRequestable,
+  sortImports,
 };


Test patch:
diff --git a/test/__snapshots__/import-option.test.js.snap b/test/__snapshots__/import-option.test.js.snap
index 213691d..a1b6555 100644
--- a/test/__snapshots__/import-option.test.js.snap
+++ b/test/__snapshots__/import-option.test.js.snap
@@ -161,41 +161,6 @@ Array [
 
 exports[`"import" option should keep original order: warnings 1`] = `Array []`;
 
-exports[`"import" option should resolve absolute path: errors 1`] = `Array []`;
-
-exports[`"import" option should resolve absolute path: module 1`] = `
-"// Imports
-import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
-import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./test.css\\";
-var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
-___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
-// Module
-___CSS_LOADER_EXPORT___.push([module.id, \\"\\", \\"\\"]);
-// Exports
-export default ___CSS_LOADER_EXPORT___;
-"
-`;
-
-exports[`"import" option should resolve absolute path: result 1`] = `
-Array [
-  Array [
-    "../../src/index.js?[ident]!./import/test.css",
-    ".test {
-  a: a;
-}
-",
-    "",
-  ],
-  Array [
-    "./import/import-absolute.css",
-    "",
-    "",
-  ],
-]
-`;
-
-exports[`"import" option should resolve absolute path: warnings 1`] = `Array []`;
-
 exports[`"import" option should resolve server-relative url relative rootContext: errors 1`] = `Array []`;
 
 exports[`"import" option should resolve server-relative url relative rootContext: module 1`] = `
@@ -390,6 +355,7 @@ import ___CSS_LOADER_AT_RULE_IMPORT_6___ from \\"-!../../../src/index.js??[ident
 import ___CSS_LOADER_AT_RULE_IMPORT_7___ from \\"-!../../../src/index.js??[ident]!./alias.css\\";
 import ___CSS_LOADER_AT_RULE_IMPORT_8___ from \\"-!../../../src/index.js??[ident]!./url.css\\";
 import ___CSS_LOADER_AT_RULE_IMPORT_9___ from \\"-!../../../src/index.js??[ident]!./te'st.css\\";
+import ___CSS_LOADER_AT_RULE_IMPORT_10___ from \\"-!../../../src/index.js??[ident]!./node_modules/package/tilde.css\\";
 import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
 import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
 var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
@@ -418,6 +384,7 @@ ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_9___);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_9___);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_9___);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_9___);
+___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_10___);
 var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
 // Module
 ___CSS_LOADER_EXPORT___.push([module.id, \\"@import url(test.css);\\\\n@import url('test.css');\\\\n@import url(\\\\\\"test.css\\\\\\");\\\\n@IMPORT url(test.css);\\\\n@import URL(test.css);\\\\n@import url(test.css );\\\\n@import url( test.css);\\\\n@import url( test.css );\\\\n@import url(\\\\n  test.css\\\\n);\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import \\\\\\"test.css\\\\\\";\\\\n@import 'test.css';\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\"   \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import url(test.css) screen and (orientation:landscape);\\\\n@import url(test.css) SCREEN AND (ORIENTATION: LANDSCAPE);\\\\n@import url(test.css)screen and (orientation:landscape);\\\\n@import url(test.css)  screen and (orientation:landscape);\\\\n@import url(~package/test.css);\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n\\\\n.class {\\\\n  a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n  @import 'path.css';\\\\n}\\\\n\\\\n.background {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n@import url(./test.css);\\\\n\\\\n@import './te\\\\\\\\\\\\nst.css';\\\\n@import './te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css';\\\\n@import url('./te\\\\\\\\\\\\nst.css');\\\\n@import url('./te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css');\\\\n@import './test test.css';\\\\n@import url('./test test.css');\\\\n@import './test\\\\\\\\ test.css';\\\\n@import url('./test\\\\\\\\ test.css');\\\\n@import './test%20test.css';\\\\n@import url('./test%20test.css');\\\\n@import './\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import './t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import url(./test\\\\\\\\ test.css);\\\\n@import url(./t\\\\\\\\65st%20test.css);\\\\n@import url('./t\\\\\\\\65st%20test.css');\\\\n@import url(\\\\\\"./t\\\\\\\\65st%20test.css\\\\\\");\\\\n@import \\\\\\"./t\\\\\\\\65st%20test.css\\\\\\";\\\\n@import './t\\\\\\\\65st%20test.css';\\\\n@import url(                 test.css                      );\\\\n@import nourl(test.css);\\\\n@import '\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n';\\\\n\\", \\"\\"]);
@@ -594,6 +561,11 @@ Array [
 ",
     "",
   ],
+  Array [
+    "../../src/index.js?[ident]!./import/node_modules/package/tilde.css",
+    "a { color: red };",
+    "",
+  ],
   Array [
     "./import/import.css",
     "@import url(test.css);
@@ -771,6 +743,7 @@ import ___CSS_LOADER_AT_RULE_IMPORT_9___ from \\"-!../../../src/index.js??[ident
 import ___CSS_LOADER_AT_RULE_IMPORT_10___ from \\"-!../../../src/index.js??[ident]!./url.css\\";
 import ___CSS_LOADER_AT_RULE_IMPORT_11___ from \\"-!../../../src/index.js??[ident]!./te'st.css\\";
 import ___CSS_LOADER_AT_RULE_IMPORT_12___ from \\"-!../../../src/index.js??[ident]!./test test.css\\";
+import ___CSS_LOADER_AT_RULE_IMPORT_13___ from \\"-!../../../src/index.js??[ident]!./node_modules/package/tilde.css\\";
 import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
 import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
 var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
@@ -837,6 +810,7 @@ ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_12___);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_12___);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_12___);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
+___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_13___);
 var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
 // Module
 ___CSS_LOADER_EXPORT___.push([module.id, \\"@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\"   \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n\\\\n.class {\\\\n  a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n  @import 'path.css';\\\\n}\\\\n\\\\n.background {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n@import nourl(test.css);\\\\n@import '\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n';\\\\n\\", \\"\\"]);
@@ -1317,6 +1291,11 @@ Array [
 ",
     "",
   ],
+  Array [
+    "../../src/index.js?[ident]!./import/node_modules/package/tilde.css",
+    "a { color: red };",
+    "",
+  ],
   Array [
     "./import/import.css",
     "@import url();
@@ -1436,7 +1415,7 @@ import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
 var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
 var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
 // Module
-___CSS_LOADER_EXPORT___.push([module.id, \\"@import url(test.css);\\\\n@import url('test.css');\\\\n@import url(\\\\\\"test.css\\\\\\");\\\\n@IMPORT url(test.css);\\\\n@import URL(test.css);\\\\n@import url(test.css );\\\\n@import url( test.css);\\\\n@import url( test.css );\\\\n@import url(\\\\n  test.css\\\\n);\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import \\\\\\"test.css\\\\\\";\\\\n@import 'test.css';\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\"   \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import url(test.css) screen and (orientation:landscape);\\\\n@import url(test.css) SCREEN AND (ORIENTATION: LANDSCAPE);\\\\n@import url(test.css)screen and (orientation:landscape);\\\\n@import url(test.css)  screen and (orientation:landscape);\\\\n@import url(test-media.css) screen and (orientation:landscape);\\\\n@import url(test-other.css) (min-width: 100px);\\\\n@import url(http://example.com/style.css);\\\\n@import url(http://example.com/style.css);\\\\n@import url(http://example.com/style.css#hash);\\\\n@import url(http://example.com/style.css?#hash);\\\\n@import url(http://example.com/style.css?foo=bar#hash);\\\\n@import url(http://example.com/other-style.css) screen and (orientation:landscape);\\\\n@import url(http://example.com/other-style.css) screen and (orientation:landscape);\\\\n@import url(\\\\\\"//example.com/style.css\\\\\\");\\\\n@import url(~package/test.css);\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n@import url('query.css?foo=1&bar=1');\\\\n@import url('other-query.css?foo=1&bar=1#hash');\\\\n@import url('other-query.css?foo=1&bar=1#hash') screen and (orientation:landscape);\\\\n@import url('https://fonts.googleapis.com/css?family=Roboto');\\\\n@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC');\\\\n@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto');\\\\n\\\\n.class {\\\\n  a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n  @import 'path.css';\\\\n}\\\\n\\\\n@import url('./relative.css');\\\\n@import url('../import/top-relative.css');\\\\n@import url(~package/tilde.css);\\\\n@import url(~aliasesImport/alias.css);\\\\n@import url('./url.css');\\\\n\\\\n.background {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n@import url(./test.css);\\\\n\\\\n@import './te\\\\\\\\\\\\nst.css';\\\\n@import './te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css';\\\\n@import url('./te\\\\\\\\\\\\nst.css');\\\\n@import url('./te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css');\\\\n\\\\n@import \\\\\\"./te'st.css\\\\\\";\\\\n@import url(\\\\\\"./te'st.css\\\\\\");\\\\n@import './te\\\\\\\\'st.css';\\\\n@import url('./te\\\\\\\\'st.css');\\\\n@import './test test.css';\\\\n@import url('./test test.css');\\\\n@import './test\\\\\\\\ test.css';\\\\n@import url('./test\\\\\\\\ test.css');\\\\n@import './test%20test.css';\\\\n@import url('./test%20test.css');\\\\n@import './\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import './t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import url(./test\\\\\\\\ test.css);\\\\n@import url(./t\\\\\\\\65st%20test.css);\\\\n@import url('./t\\\\\\\\65st%20test.css');\\\\n@import url(\\\\\\"./t\\\\\\\\65st%20test.css\\\\\\");\\\\n@import \\\\\\"./t\\\\\\\\65st%20test.css\\\\\\";\\\\n@import './t\\\\\\\\65st%20test.css';\\\\n@import url(                 test.css                      );\\\\n@import nourl(test.css);\\\\n@import '\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n';\\\\n\\", \\"\\"]);
+___CSS_LOADER_EXPORT___.push([module.id, \\"@import url(test.css);\\\\n@import url('test.css');\\\\n@import url(\\\\\\"test.css\\\\\\");\\\\n@IMPORT url(test.css);\\\\n@import URL(test.css);\\\\n@import url(test.css );\\\\n@import url( test.css);\\\\n@import url( test.css );\\\\n@import url(\\\\n  test.css\\\\n);\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import \\\\\\"test.css\\\\\\";\\\\n@import 'test.css';\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\"   \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import url(test.css) screen and (orientation:landscape);\\\\n@import url(test.css) SCREEN AND (ORIENTATION: LANDSCAPE);\\\\n@import url(test.css)screen and (orientation:landscape);\\\\n@import url(test.css)  screen and (orientation:landscape);\\\\n@import url(test-media.css) screen and (orientation:landscape);\\\\n@import url(test-other.css) (min-width: 100px);\\\\n@import url(http://example.com/style.css);\\\\n@import url(http://example.com/style.css);\\\\n@import url(http://example.com/style.css#hash);\\\\n@import url(http://example.com/style.css?#hash);\\\\n@import url(http://example.com/style.css?foo=bar#hash);\\\\n@import url(http://example.com/other-style.css) screen and (orientation:landscape);\\\\n@import url(http://example.com/other-style.css) screen and (orientation:landscape);\\\\n@import url(\\\\\\"//example.com/style.css\\\\\\");\\\\n@import url(~package/test.css);\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n@import url('query.css?foo=1&bar=1');\\\\n@import url('other-query.css?foo=1&bar=1#hash');\\\\n@import url('other-query.css?foo=1&bar=1#hash') screen and (orientation:landscape);\\\\n@import url('https://fonts.googleapis.com/css?family=Roboto');\\\\n@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC');\\\\n@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto');\\\\n\\\\n.class {\\\\n  a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n  @import 'path.css';\\\\n}\\\\n\\\\n@import url('./relative.css');\\\\n@import url('../import/top-relative.css');\\\\n@import url(~package/tilde.css);\\\\n@import url(~aliasesImport/alias.css);\\\\n@import url('./url.css');\\\\n\\\\n.background {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n@import url(./test.css);\\\\n\\\\n@import './te\\\\\\\\\\\\nst.css';\\\\n@import './te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css';\\\\n@import url('./te\\\\\\\\\\\\nst.css');\\\\n@import url('./te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css');\\\\n\\\\n@import \\\\\\"./te'st.css\\\\\\";\\\\n@import url(\\\\\\"./te'st.css\\\\\\");\\\\n@import './te\\\\\\\\'st.css';\\\\n@import url('./te\\\\\\\\'st.css');\\\\n@import './test test.css';\\\\n@import url('./test test.css');\\\\n@import './test\\\\\\\\ test.css';\\\\n@import url('./test\\\\\\\\ test.css');\\\\n@import './test%20test.css';\\\\n@import url('./test%20test.css');\\\\n@import './\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import './t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import url(./test\\\\\\\\ test.css);\\\\n@import url(./t\\\\\\\\65st%20test.css);\\\\n@import url('./t\\\\\\\\65st%20test.css');\\\\n@import url(\\\\\\"./t\\\\\\\\65st%20test.css\\\\\\");\\\\n@import \\\\\\"./t\\\\\\\\65st%20test.css\\\\\\";\\\\n@import './t\\\\\\\\65st%20test.css';\\\\n@import url(                 test.css                      );\\\\n@import nourl(test.css);\\\\n@import '\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n';\\\\n@import url('!!../../helpers/string-loader.js?esModule=false!~package/tilde.css');\\\\n\\", \\"\\"]);
 // Exports
 export default ___CSS_LOADER_EXPORT___;
 "
@@ -1555,6 +1534,7 @@ st.css');
 \\\\
 \\\\
 ';
+@import url('!!../../helpers/string-loader.js?esModule=false!~package/tilde.css');
 ",
     "",
   ],
@@ -1581,6 +1561,7 @@ import ___CSS_LOADER_AT_RULE_IMPORT_9___ from \\"-!../../../src/index.js??[ident
 import ___CSS_LOADER_AT_RULE_IMPORT_10___ from \\"-!../../../src/index.js??[ident]!./url.css\\";
 import ___CSS_LOADER_AT_RULE_IMPORT_11___ from \\"-!../../../src/index.js??[ident]!./te'st.css\\";
 import ___CSS_LOADER_AT_RULE_IMPORT_12___ from \\"-!../../../src/index.js??[ident]!./test test.css\\";
+import ___CSS_LOADER_AT_RULE_IMPORT_13___ from \\"-!../../../src/index.js??[ident]!./node_modules/package/tilde.css\\";
 import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
 import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
 var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
@@ -1647,6 +1628,7 @@ ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_12___);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_12___);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_12___);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
+___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_13___);
 var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
 // Module
 ___CSS_LOADER_EXPORT___.push([module.id, \\"@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\"   \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n\\\\n.class {\\\\n  a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n  @import 'path.css';\\\\n}\\\\n\\\\n.background {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n@import nourl(test.css);\\\\n@import '\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n';\\\\n\\", \\"\\"]);
@@ -2127,6 +2109,11 @@ Array [
 ",
     "",
   ],
+  Array [
+    "../../src/index.js?[ident]!./import/node_modules/package/tilde.css",
+    "a { color: red };",
+    "",
+  ],
   Array [
     "./import/import.css",
     "@import url();
diff --git a/test/__snapshots__/modules-option.test.js.snap b/test/__snapshots__/modules-option.test.js.snap
index 1684c3e..64cb240 100644
--- a/test/__snapshots__/modules-option.test.js.snap
+++ b/test/__snapshots__/modules-option.test.js.snap
@@ -674,16 +674,14 @@ exports[`"modules" option should resolve package from node_modules with and with
 "// Imports
 import ___CSS_LOADER_API_IMPORT___ from \\"../../../../src/runtime/api.js\\";
 import ___CSS_LOADER_ICSS_IMPORT_0___ from \\"-!../../../../src/index.js??[ident]!../node_modules/test/index.css\\";
-import ___CSS_LOADER_ICSS_IMPORT_1___ from \\"-!../../../../src/index.js??[ident]!../node_modules/test/index.css\\";
 var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_ICSS_IMPORT_0___, \\"\\", true);
-___CSS_LOADER_EXPORT___.i(___CSS_LOADER_ICSS_IMPORT_1___, \\"\\", true);
 // Module
-___CSS_LOADER_EXPORT___.push([module.id, \\"._28d41yD0DOcLHrf-73cR_T {\\\\n  color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"foo\\"] + \\";\\\\n  background: \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"bar\\"] + \\";\\\\n}\\\\n\\\\n\\", \\"\\"]);
+___CSS_LOADER_EXPORT___.push([module.id, \\"._28d41yD0DOcLHrf-73cR_T {\\\\n  color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"foo\\"] + \\";\\\\n  background: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"bar\\"] + \\";\\\\n}\\\\n\\\\n\\", \\"\\"]);
 // Exports
 ___CSS_LOADER_EXPORT___.locals = {
 	\\"foo\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"foo\\"] + \\"\\",
-	\\"bar\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"bar\\"] + \\"\\",
+	\\"bar\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"bar\\"] + \\"\\",
 	\\"className\\": \\"_28d41yD0DOcLHrf-73cR_T\\"
 };
 export default ___CSS_LOADER_EXPORT___;
@@ -1195,7 +1193,7 @@ ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_ICSS_IMPORT_6___, \\"\\", true);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"(min-width: 100px)\\");
 var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
 // Module
-___CSS_LOADER_EXPORT___.push([module.id, \\".ZMSNr6C99iaw7MLxUwdOS {\\\\n  color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\";\\\\n}\\\\n\\\\n._1cqCGpe9NYyq1QK9ZJTYjq {\\\\n  color: blue;\\\\n}\\\\n\\\\n._3cHSwCzSNQhvVVhVTyibk1 {\\\\n  display: block;\\\\n}\\\\n\\\\n._28PrYQvhzTO0O4lvyG5iwt {\\\\n  width: \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"v-something\\"] + \\";\\\\n}\\\\n\\\\n._1YVkrayEq847Hvjkn6elMG {\\\\n  color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-other\\"] + \\";\\\\n}\\\\n\\\\n._1A0MRQaJb1W2zo0ExJmTey {\\\\n  prop: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\";\\\\n  duplicate: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-other\\"] + \\";\\\\n}\\\\n\\\\n._2gPPIkO_Lu5fwukCZxWJsA {\\\\n  color: red;\\\\n}\\\\n\\\\n._1ntRnCT1g_332UHHQLWV4u {\\\\n  color: yellow;\\\\n}\\\\n\\\\n.PRo72l3_2-Pu9fLkregtf {\\\\n  color: gray;\\\\n}\\\\n\\\\n._1sQ5csZq_9qTD0wGuDmbDa {\\\\n  color: gray;\\\\n}\\\\n\\\\n.bGTjQvOucAI2Dc78tA03a {\\\\n  color: gainsboro;\\\\n}\\\\n\\\\n._3XhFlbnqfhWt5Gl1ls644u {\\\\n  color: #BF4040;\\\\n}\\\\n\\\\n._18Ri--KL30T1TsLGKyHGW0 {\\\\n  color: black;\\\\n}\\\\n\\\\n@media (min-width: 960px) {\\\\n  .sajWdDCURRi5VDXsBRZRB {\\\\n    padding: 0 20px;\\\\n  }\\\\n}\\\\n\\\\n.\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"s-white\\"] + \\" {\\\\n  color: white;\\\\n}\\\\n\\\\n@media \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"m-small\\"] + \\" {\\\\n  .sajWdDCURRi5VDXsBRZRB {\\\\n    padding: 20px 20px;\\\\n  }\\\\n}\\\\n@value v-comment: /* comment */;\\\\n\\\\n._1J8pOCxWpCPJVfTW869be3 {\\\\n  v-ident: validIdent;\\\\n  v-pre-defined-ident: left;\\\\n  v-string: 'content';\\\\n  v-string-1: '';\\\\n  v-url: url(https://www.exammple.com/images/my-background.png);\\\\n  v-url-1: url('https://www.exammple.com/images/my-background.png');\\\\n  v-url-2: url(\\\\\\"https://www.exammple.com/images/my-background.png\\\\\\");\\\\n  v-integer: 100;\\\\n  v-integer-1: -100;\\\\n  v-integer-2: +100;\\\\n  v-number: .60;\\\\n  v-number-1: -456.8;\\\\n  v-number-2: -3.4e-2;\\\\n  v-dimension: 12px;\\\\n  v-percentage: 100%;\\\\n  v-hex: #fff;\\\\n  v-comment: v-comment 10px v-comment;\\\\n  v-function: rgb(0,0,0);\\\\n  v-unicode-range: U+0025-00FF;\\\\n  mutliple: #fff .60 100%;\\\\n}\\\\n\\\\n\\\\na {\\\\n  content: 'content';\\\\n}\\\\n\\\\n@supports (content: 'content') {\\\\n  a {\\\\n    content: 'content';\\\\n  }\\\\n}\\\\n\\\\n[class~='content'] {\\\\n  color:green;\\\\n}\\\\n\\\\n._7OGZqSQKbtb4U2k2NYW7g {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]);
+___CSS_LOADER_EXPORT___.push([module.id, \\".ZMSNr6C99iaw7MLxUwdOS {\\\\n  color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\";\\\\n}\\\\n\\\\n._1cqCGpe9NYyq1QK9ZJTYjq {\\\\n  color: blue;\\\\n}\\\\n\\\\n._3cHSwCzSNQhvVVhVTyibk1 {\\\\n  display: block;\\\\n}\\\\n\\\\n._28PrYQvhzTO0O4lvyG5iwt {\\\\n  width: \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"v-something\\"] + \\";\\\\n}\\\\n\\\\n._1YVkrayEq847Hvjkn6elMG {\\\\n  color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-other\\"] + \\";\\\\n}\\\\n\\\\n._1A0MRQaJb1W2zo0ExJmTey {\\\\n  prop: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\";\\\\n  duplicate: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-other\\"] + \\";\\\\n}\\\\n\\\\n._2gPPIkO_Lu5fwukCZxWJsA {\\\\n  color: red;\\\\n}\\\\n\\\\n._1ntRnCT1g_332UHHQLWV4u {\\\\n  color: yellow;\\\\n}\\\\n\\\\n.PRo72l3_2-Pu9fLkregtf {\\\\n  color: gray;\\\\n}\\\\n\\\\n._1sQ5csZq_9qTD0wGuDmbDa {\\\\n  color: gray;\\\\n}\\\\n\\\\n.bGTjQvOucAI2Dc78tA03a {\\\\n  color: gainsboro;\\\\n}\\\\n\\\\n._2ePUJjxsN-hrrw37ng5eNH {\\\\n  color: gainsboro;\\\\n}\\\\n\\\\n._3XhFlbnqfhWt5Gl1ls644u {\\\\n  color: #BF4040;\\\\n}\\\\n\\\\n._18Ri--KL30T1TsLGKyHGW0 {\\\\n  color: black;\\\\n}\\\\n\\\\n@media (min-width: 960px) {\\\\n  .sajWdDCURRi5VDXsBRZRB {\\\\n    padding: 0 20px;\\\\n  }\\\\n}\\\\n\\\\n.\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"s-white\\"] + \\" {\\\\n  color: white;\\\\n}\\\\n\\\\n@media \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"m-small\\"] + \\" {\\\\n  .sajWdDCURRi5VDXsBRZRB {\\\\n    padding: 20px 20px;\\\\n  }\\\\n}\\\\n@value v-comment: /* comment */;\\\\n\\\\n._1J8pOCxWpCPJVfTW869be3 {\\\\n  v-ident: validIdent;\\\\n  v-pre-defined-ident: left;\\\\n  v-string: 'content';\\\\n  v-string-1: '';\\\\n  v-url: url(https://www.exammple.com/images/my-background.png);\\\\n  v-url-1: url('https://www.exammple.com/images/my-background.png');\\\\n  v-url-2: url(\\\\\\"https://www.exammple.com/images/my-background.png\\\\\\");\\\\n  v-integer: 100;\\\\n  v-integer-1: -100;\\\\n  v-integer-2: +100;\\\\n  v-number: .60;\\\\n  v-number-1: -456.8;\\\\n  v-number-2: -3.4e-2;\\\\n  v-dimension: 12px;\\\\n  v-percentage: 100%;\\\\n  v-hex: #fff;\\\\n  v-comment: v-comment 10px v-comment;\\\\n  v-function: rgb(0,0,0);\\\\n  v-unicode-range: U+0025-00FF;\\\\n  mutliple: #fff .60 100%;\\\\n}\\\\n\\\\n\\\\na {\\\\n  content: 'content';\\\\n}\\\\n\\\\n@supports (content: 'content') {\\\\n  a {\\\\n    content: 'content';\\\\n  }\\\\n}\\\\n\\\\n[class~='content'] {\\\\n  color:green;\\\\n}\\\\n\\\\n._7OGZqSQKbtb4U2k2NYW7g {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]);
 // Exports
 ___CSS_LOADER_EXPORT___.locals = {
 	\\"v-def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\"\\",
@@ -1237,6 +1235,7 @@ ___CSS_LOADER_EXPORT___.locals = {
 	\\"top-relative\\": \\"PRo72l3_2-Pu9fLkregtf \\" + ___CSS_LOADER_ICSS_IMPORT_4___.locals[\\"imported-relative\\"] + \\"\\",
 	\\"module\\": \\"_1sQ5csZq_9qTD0wGuDmbDa \\" + ___CSS_LOADER_ICSS_IMPORT_5___.locals[\\"imported-module\\"] + \\"\\",
 	\\"alias\\": \\"bGTjQvOucAI2Dc78tA03a \\" + ___CSS_LOADER_ICSS_IMPORT_6___.locals[\\"imported-alias\\"] + \\"\\",
+	\\"alias-duplicate\\": \\"_2ePUJjxsN-hrrw37ng5eNH \\" + ___CSS_LOADER_ICSS_IMPORT_6___.locals[\\"imported-alias\\"] + \\"\\",
 	\\"primary-selector\\": \\"_3XhFlbnqfhWt5Gl1ls644u\\",
 	\\"black-selector\\": \\"_18Ri--KL30T1TsLGKyHGW0\\",
 	\\"header\\": \\"sajWdDCURRi5VDXsBRZRB\\",
@@ -1356,6 +1355,10 @@ Array [
   color: gainsboro;
 }
 
+._2ePUJjxsN-hrrw37ng5eNH {
+  color: gainsboro;
+}
+
 ._3XhFlbnqfhWt5Gl1ls644u {
   color: #BF4040;
 }
@@ -1433,7 +1436,7 @@ exports[`"modules" option should support resolving in composes: warnings 1`] = `
 exports[`"modules" option should throw error when unresolved import: errors 1`] = `
 Array [
   "ModuleBuildError: Module build failed (from \`replaced original path\`):
-Error: Can't resolve '//exammple.com/unresolved.css' in '/test/fixtures/modules/unresolved'",
+Error: Can't resolve './//exammple.com/unresolved.css' in '/test/fixtures/modules/unresolved'",
 ]
 `;
 
diff --git a/test/__snapshots__/onlyLocals-option.test.js.snap b/test/__snapshots__/onlyLocals-option.test.js.snap
index 92f103c..e95fb26 100644
--- a/test/__snapshots__/onlyLocals-option.test.js.snap
+++ b/test/__snapshots__/onlyLocals-option.test.js.snap
@@ -53,6 +53,7 @@ ___CSS_LOADER_EXPORT___.locals = {
 	\\"top-relative\\": \\"_top-relative \\" + ___CSS_LOADER_ICSS_IMPORT_4___.locals[\\"imported-relative\\"] + \\"\\",
 	\\"module\\": \\"_module \\" + ___CSS_LOADER_ICSS_IMPORT_5___.locals[\\"imported-module\\"] + \\"\\",
 	\\"alias\\": \\"_alias \\" + ___CSS_LOADER_ICSS_IMPORT_6___.locals[\\"imported-alias\\"] + \\"\\",
+	\\"alias-duplicate\\": \\"_alias-duplicate \\" + ___CSS_LOADER_ICSS_IMPORT_6___.locals[\\"imported-alias\\"] + \\"\\",
 	\\"primary-selector\\": \\"_primary-selector\\",
 	\\"black-selector\\": \\"_black-selector\\",
 	\\"header\\": \\"_header\\",
@@ -67,6 +68,7 @@ exports[`"onlyLocals" option should work with the "esModule" option: result 1`]
 Object {
   "locals": Object {
     "alias": "_alias _imported-alias",
+    "alias-duplicate": "_alias-duplicate _imported-alias",
     "black-selector": "_black-selector",
     "class": "_class",
     "foo": "_foo",
@@ -169,6 +171,7 @@ ___CSS_LOADER_EXPORT___.locals = {
 	\\"top-relative\\": \\"_top-relative \\" + ___CSS_LOADER_ICSS_IMPORT_4___.locals[\\"imported-relative\\"] + \\"\\",
 	\\"module\\": \\"_module \\" + ___CSS_LOADER_ICSS_IMPORT_5___.locals[\\"imported-module\\"] + \\"\\",
 	\\"alias\\": \\"_alias \\" + ___CSS_LOADER_ICSS_IMPORT_6___.locals[\\"imported-alias\\"] + \\"\\",
+	\\"alias-duplicate\\": \\"_alias-duplicate \\" + ___CSS_LOADER_ICSS_IMPORT_6___.locals[\\"imported-alias\\"] + \\"\\",
 	\\"primary-selector\\": \\"_primary-selector\\",
 	\\"black-selector\\": \\"_black-selector\\",
 	\\"header\\": \\"_header\\",
@@ -183,6 +186,7 @@ exports[`"onlyLocals" option should work: result 1`] = `
 Object {
   "locals": Object {
     "alias": "_alias _imported-alias",
+    "alias-duplicate": "_alias-duplicate _imported-alias",
     "black-selector": "_black-selector",
     "class": "_class",
     "foo": "_foo",
diff --git a/test/__snapshots__/url-option.test.js.snap b/test/__snapshots__/url-option.test.js.snap
index 41a449f..91eabd8 100644
--- a/test/__snapshots__/url-option.test.js.snap
+++ b/test/__snapshots__/url-option.test.js.snap
@@ -9,35 +9,6 @@ Error: Can't resolve 'unresolved.png' in '/test/fixtures/url'",
 
 exports[`"url" option should emit warning when unresolved import: warnings 1`] = `Array []`;
 
-exports[`"url" option should resolve absolute path: errors 1`] = `Array []`;
-
-exports[`"url" option should resolve absolute path: module 1`] = `
-"// Imports
-import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
-import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
-import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
-var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
-var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
-// Module
-___CSS_LOADER_EXPORT___.push([module.id, \\"\\\\n.background {background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"); }\\", \\"\\"]);
-// Exports
-export default ___CSS_LOADER_EXPORT___;
-"
-`;
-
-exports[`"url" option should resolve absolute path: result 1`] = `
-Array [
-  Array [
-    "./url/url-absolute.css",
-    "
-.background {background: url(/webpack/public/path/img.png); }",
-    "",
-  ],
-]
-`;
-
-exports[`"url" option should resolve absolute path: warnings 1`] = `Array []`;
-
 exports[`"url" option should work when not specified: errors 1`] = `Array []`;
 
 exports[`"url" option should work when not specified: module 1`] = `
@@ -49,31 +20,27 @@ import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
 import ___CSS_LOADER_URL_IMPORT_1___ from \\"./node_modules/package/img.png\\";
 import ___CSS_LOADER_URL_IMPORT_2___ from \\"./other-img.png\\";
 import ___CSS_LOADER_URL_IMPORT_3___ from \\"./img img.png\\";
-import ___CSS_LOADER_URL_IMPORT_4___ from \\"./img.png\\";
-import ___CSS_LOADER_URL_IMPORT_5___ from \\"./font.woff\\";
-import ___CSS_LOADER_URL_IMPORT_6___ from \\"./font.woff2\\";
-import ___CSS_LOADER_URL_IMPORT_7___ from \\"./font.eot\\";
-import ___CSS_LOADER_URL_IMPORT_8___ from \\"./node_modules/package/font.ttf\\";
-import ___CSS_LOADER_URL_IMPORT_9___ from \\"./font with spaces.eot\\";
-import ___CSS_LOADER_URL_IMPORT_10___ from \\"./font.svg\\";
-import ___CSS_LOADER_URL_IMPORT_11___ from \\"./font.woff2?foo=bar\\";
-import ___CSS_LOADER_URL_IMPORT_12___ from \\"./img1x.png\\";
-import ___CSS_LOADER_URL_IMPORT_13___ from \\"./img2x.png\\";
-import ___CSS_LOADER_URL_IMPORT_14___ from \\"./img.png?foo\\";
-import ___CSS_LOADER_URL_IMPORT_15___ from \\"./img.png?foo=bar\\";
-import ___CSS_LOADER_URL_IMPORT_16___ from \\"./img.png?\\";
-import ___CSS_LOADER_URL_IMPORT_17___ from \\"./img-simple.png\\";
-import ___CSS_LOADER_URL_IMPORT_18___ from \\"./img-simple.png\\";
-import ___CSS_LOADER_URL_IMPORT_19___ from \\"./img-simple.png\\";
-import ___CSS_LOADER_URL_IMPORT_20___ from \\"./img.png\\";
-import ___CSS_LOADER_URL_IMPORT_21___ from \\"./nested/img.png\\";
-import ___CSS_LOADER_URL_IMPORT_22___ from \\"./img3x.png\\";
-import ___CSS_LOADER_URL_IMPORT_23___ from \\"./img1x.png?foo=bar\\";
-import ___CSS_LOADER_URL_IMPORT_24___ from \\"./img'img.png\\";
-import ___CSS_LOADER_URL_IMPORT_25___ from \\"./img'''img.png\\";
-import ___CSS_LOADER_URL_IMPORT_26___ from \\"./img(img.png\\";
-import ___CSS_LOADER_URL_IMPORT_27___ from \\"./img)img.png\\";
-import ___CSS_LOADER_URL_IMPORT_28___ from \\"./img'() img.png\\";
+import ___CSS_LOADER_URL_IMPORT_4___ from \\"./font.woff\\";
+import ___CSS_LOADER_URL_IMPORT_5___ from \\"./font.woff2\\";
+import ___CSS_LOADER_URL_IMPORT_6___ from \\"./font.eot\\";
+import ___CSS_LOADER_URL_IMPORT_7___ from \\"./node_modules/package/font.ttf\\";
+import ___CSS_LOADER_URL_IMPORT_8___ from \\"./font with spaces.eot\\";
+import ___CSS_LOADER_URL_IMPORT_9___ from \\"./font.svg\\";
+import ___CSS_LOADER_URL_IMPORT_10___ from \\"./font.woff2?foo=bar\\";
+import ___CSS_LOADER_URL_IMPORT_11___ from \\"./img1x.png\\";
+import ___CSS_LOADER_URL_IMPORT_12___ from \\"./img2x.png\\";
+import ___CSS_LOADER_URL_IMPORT_13___ from \\"./img.png?foo\\";
+import ___CSS_LOADER_URL_IMPORT_14___ from \\"./img.png?foo=bar\\";
+import ___CSS_LOADER_URL_IMPORT_15___ from \\"./img.png?\\";
+import ___CSS_LOADER_URL_IMPORT_16___ from \\"./img-simple.png\\";
+import ___CSS_LOADER_URL_IMPORT_17___ from \\"./nested/img.png\\";
+import ___CSS_LOADER_URL_IMPORT_18___ from \\"./img3x.png\\";
+import ___CSS_LOADER_URL_IMPORT_19___ from \\"./img1x.png?foo=bar\\";
+import ___CSS_LOADER_URL_IMPORT_20___ from \\"./img'img.png\\";
+import ___CSS_LOADER_URL_IMPORT_21___ from \\"./img'''img.png\\";
+import ___CSS_LOADER_URL_IMPORT_22___ from \\"./img(img.png\\";
+import ___CSS_LOADER_URL_IMPORT_23___ from \\"./img)img.png\\";
+import ___CSS_LOADER_URL_IMPORT_24___ from \\"./img'() img.png\\";
 var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
 var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
@@ -86,37 +53,33 @@ var ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_
 var ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);
 var ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);
 var ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);
-var ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);
-var ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___, { hash: \\"#svgFontName\\" });
-var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);
-var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { hash: \\"?#iefix\\" });
-var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \\"?#iefix\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \\"#svgFontName\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);
+var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___, { hash: \\"?#iefix\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___, { hash: \\"?#iefix\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);
 var ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);
 var ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);
 var ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);
-var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);
-var ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___, { hash: \\"#hash\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___, { hash: \\"#hash\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);
 var ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);
 var ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);
-var ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);
-var ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___);
-var ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___);
-var ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___);
-var ___CSS_LOADER_URL_REPLACEMENT_26___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_27___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_28___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_29___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_30___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_31___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { hash: \\"#hash\\", needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_32___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { hash: \\"?#iefix\\", needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_33___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___);
+var ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_26___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_27___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { hash: \\"#hash\\", needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_28___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { hash: \\"?#iefix\\", needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_29___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);
+var ___CSS_LOADER_URL_REPLACEMENT_30___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___);
+var ___CSS_LOADER_URL_REPLACEMENT_31___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___);
+var ___CSS_LOADER_URL_REPLACEMENT_32___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___);
+var ___CSS_LOADER_URL_REPLACEMENT_33___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___);
 var ___CSS_LOADER_URL_REPLACEMENT_34___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_24___);
-var ___CSS_LOADER_URL_REPLACEMENT_35___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___);
-var ___CSS_LOADER_URL_REPLACEMENT_36___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_26___);
-var ___CSS_LOADER_URL_REPLACEMENT_37___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_27___);
-var ___CSS_LOADER_URL_REPLACEMENT_38___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_28___);
 // Module
-___CSS_LOADER_EXPORT___.push([module.id, \\".class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"\\\\n  );\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,<svg xmlns=\\\\\\"http://www.w3.org/2000/svg\\\\\\"><filter id=\\\\\\"filter\\\\\\"><feGaussianBlur in=\\\\\\"SourceAlpha\\\\\\" stdDeviation=\\\\\\"0\\\\\\" /><feOffset dx=\\\\\\"1\\\\\\" dy=\\\\\\"2\\\\\\" result=\\\\\\"offsetblur\\\\\\" /><feFlood flood-color=\\\\\\"rgba(255,255,255,1)\\\\\\" /><feComposite in2=\\\\\\"offsetblur\\\\\\" operator=\\\\\\"in\\\\\\" /><feMerge><feMergeNode /><feMergeNode in=\\\\\\"SourceGraphic\\\\\\" /></feMerge></filter></svg>#filter');\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \\") format('eot'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") format('truetype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\") format('svg'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\") format('embedded-opentype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n  body {\\\\n    background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  }\\\\n}\\\\n\\\\na {\\\\n  content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n  content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") xyz;\\\\n}\\\\n\\\\n.a {\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\") 2x)\\\\n}\\\\n\\\\n.class {\\\\n  background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('   ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\n  ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: ___CSS_LOADER_URL___;\\\\n  background: ___CSS_LOADER_URL___INDEX___;\\\\n  background: ___CSS_LOADER_URL___99999___;\\\\n  background: ___CSS_LOADER_IMPORT___;\\\\n  background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n  background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n}\\\\n\\\\n.root-relative {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\");\\\\n}\\\\n\\\\n.above-below {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n}\\\\n\\\\n.aliases {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\");\\\\n}\\\\n\\\\na {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\");\\\\n}\\\\n\\\\na {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\");\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  /* Broken */\\\\n  background-image: -webkit-image-set();\\\\n  background-image: -webkit-image-set('');\\\\n  background-image: image-set();\\\\n  background-image: image-set('');\\\\n  background-image: image-set(\\\\\\"\\\\\\");\\\\n  background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n  background-image: image-set(url());\\\\n  background-image: image-set(\\\\n    url()\\\\n  );\\\\n  background-image: image-set(URL());\\\\n  background-image: image-set(url(''));\\\\n  background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n  background-image: image-set(url('') 1x);\\\\n  background-image: image-set(1x);\\\\n  background-image: image-set(\\\\n    1x\\\\n  );\\\\n  background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n  /* Strings */\\\\n  background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x),\\\\n    image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x);\\\\n  background-image: image-set(\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_29___ + \\" 600dpi\\\\n  );\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\" 1x);\\\\n\\\\n  /* With \`url\` function */\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\") 2x);\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x);\\\\n  background-image: -webkit-image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\") 2x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\") 2x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\") 600dpi\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 2x);\\\\n\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n  /* Not allowed on windows */\\\\n  /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n\\\\n  background-image: image-set(\\\\n    \\\\n    \\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\") 2x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\") 3x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\") 4x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\") 5x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 6x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\") 7x\\\\n  );\\\\n}\\\\n\\\\n.class-class-class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n}\\\\n\\\\n.other-test-case {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.qqq {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.www {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n}\\\\n\\", \\"\\"]);
+___CSS_LOADER_EXPORT___.push([module.id, \\".class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"\\\\n  );\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,<svg xmlns=\\\\\\"http://www.w3.org/2000/svg\\\\\\"><filter id=\\\\\\"filter\\\\\\"><feGaussianBlur in=\\\\\\"SourceAlpha\\\\\\" stdDeviation=\\\\\\"0\\\\\\" /><feOffset dx=\\\\\\"1\\\\\\" dy=\\\\\\"2\\\\\\" result=\\\\\\"offsetblur\\\\\\" /><feFlood flood-color=\\\\\\"rgba(255,255,255,1)\\\\\\" /><feComposite in2=\\\\\\"offsetblur\\\\\\" operator=\\\\\\"in\\\\\\" /><feMerge><feMergeNode /><feMergeNode in=\\\\\\"SourceGraphic\\\\\\" /></feMerge></filter></svg>#filter');\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \\") format('woff'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('eot'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \\") format('truetype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") format('svg'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\") format('embedded-opentype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n  body {\\\\n    background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  }\\\\n}\\\\n\\\\na {\\\\n  content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n  content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") xyz;\\\\n}\\\\n\\\\n.a {\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x)\\\\n}\\\\n\\\\n.class {\\\\n  background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('   ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\n  ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: ___CSS_LOADER_URL___;\\\\n  background: ___CSS_LOADER_URL___INDEX___;\\\\n  background: ___CSS_LOADER_URL___99999___;\\\\n  background: ___CSS_LOADER_IMPORT___;\\\\n  background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n  background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.root-relative {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.above-below {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n}\\\\n\\\\n.aliases {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\na {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n}\\\\n\\\\na {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  /* Broken */\\\\n  background-image: -webkit-image-set();\\\\n  background-image: -webkit-image-set('');\\\\n  background-image: image-set();\\\\n  background-image: image-set('');\\\\n  background-image: image-set(\\\\\\"\\\\\\");\\\\n  background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n  background-image: image-set(url());\\\\n  background-image: image-set(\\\\n    url()\\\\n  );\\\\n  background-image: image-set(URL());\\\\n  background-image: image-set(url(''));\\\\n  background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n  background-image: image-set(url('') 1x);\\\\n  background-image: image-set(1x);\\\\n  background-image: image-set(\\\\n    1x\\\\n  );\\\\n  background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n  /* Strings */\\\\n  background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x),\\\\n    image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x);\\\\n  background-image: image-set(\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 600dpi\\\\n  );\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \\" 1x);\\\\n\\\\n  /* With \`url\` function */\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x);\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x);\\\\n  background-image: -webkit-image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_29___ + \\") 600dpi\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 2x);\\\\n\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n  /* Not allowed on windows */\\\\n  /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n\\\\n  background-image: image-set(\\\\n    \\\\n    \\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\") 2x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\") 3x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\") 4x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\") 5x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 6x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\") 7x\\\\n  );\\\\n}\\\\n\\\\n.class-class-class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n}\\\\n\\\\n.other-test-case {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.qqq {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.www {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n}\\\\n\\", \\"\\"]);
 // Exports
 export default ___CSS_LOADER_EXPORT___;
 "
@@ -563,11 +526,8 @@ import ___CSS_LOADER_URL_IMPORT_6___ from \\"./font.woff2?foo=bar\\";
 import ___CSS_LOADER_URL_IMPORT_7___ from \\"./img1x.png\\";
 import ___CSS_LOADER_URL_IMPORT_8___ from \\"./img2x.png\\";
 import ___CSS_LOADER_URL_IMPORT_9___ from \\"./img-simple.png\\";
-import ___CSS_LOADER_URL_IMPORT_10___ from \\"./img-simple.png\\";
-import ___CSS_LOADER_URL_IMPORT_11___ from \\"./img-simple.png\\";
-import ___CSS_LOADER_URL_IMPORT_12___ from \\"./img3x.png\\";
-import ___CSS_LOADER_URL_IMPORT_13___ from \\"./img1x.png?foo=bar\\";
-import ___CSS_LOADER_URL_IMPORT_14___ from \\"./img.png\\";
+import ___CSS_LOADER_URL_IMPORT_10___ from \\"./img3x.png\\";
+import ___CSS_LOADER_URL_IMPORT_11___ from \\"./img1x.png?foo=bar\\";
 var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
 var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
@@ -582,18 +542,15 @@ var ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_
 var ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);
 var ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);
 var ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);
-var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);
-var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);
-var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { hash: \\"#hash\\", needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { hash: \\"?#iefix\\", needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);
-var ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);
+var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { hash: \\"#hash\\", needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { hash: \\"?#iefix\\", needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);
 // Module
-___CSS_LOADER_EXPORT___.push([module.id, \\".class {\\\\n  background: url('./img.png');\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(./img.png);\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\n    \\\\\\"./img.png\\\\\\"\\\\n  );\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( './img.png' ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\\\\\"./img.png\\\\\\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( ./img.png ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(~package/img.png) url(./other-img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\\\\\"./img img.png\\\\\\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( './img img.png' ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(/img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,<svg xmlns=\\\\\\"http://www.w3.org/2000/svg\\\\\\"><filter id=\\\\\\"filter\\\\\\"><feGaussianBlur in=\\\\\\"SourceAlpha\\\\\\" stdDeviation=\\\\\\"0\\\\\\" /><feOffset dx=\\\\\\"1\\\\\\" dy=\\\\\\"2\\\\\\" result=\\\\\\"offsetblur\\\\\\" /><feFlood flood-color=\\\\\\"rgba(255,255,255,1)\\\\\\" /><feComposite in2=\\\\\\"offsetblur\\\\\\" operator=\\\\\\"in\\\\\\" /><feMerge><feMergeNode /><feMergeNode in=\\\\\\"SourceGraphic\\\\\\" /></feMerge></filter></svg>#filter');\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") format('woff'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") format('eot'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") format('truetype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \\") format('svg'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('embedded-opentype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n  body {\\\\n    background: url(\\\\\\"./img.png\\\\\\");\\\\n  }\\\\n}\\\\n\\\\na {\\\\n  content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n  content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n  background: green url('./img.png') xyz;\\\\n}\\\\n\\\\n.a {\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x)\\\\n}\\\\n\\\\n.class {\\\\n  background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('   ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\n  ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png?foo\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png?foo=bar\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png?foo=bar#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png?foo=bar#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png?\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url('./img.png') url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\") url('./img.png');\\\\n}\\\\n\\\\n.class {\\\\n  background: ___CSS_LOADER_URL___;\\\\n  background: ___CSS_LOADER_URL___INDEX___;\\\\n  background: ___CSS_LOADER_URL___99999___;\\\\n  background: ___CSS_LOADER_IMPORT___;\\\\n  background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n  background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\");\\\\n}\\\\n\\\\n.root-relative {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\");\\\\n}\\\\n\\\\n.above-below {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n  background: url('~package/img.png');\\\\n}\\\\n\\\\n.aliases {\\\\n  background: url('~aliasesImg/img.png') ;\\\\n}\\\\n\\\\na {\\\\n  background: url(./nested/img.png);\\\\n}\\\\n\\\\na {\\\\n  background: url(nested/img.png);\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  /* Broken */\\\\n  background-image: -webkit-image-set();\\\\n  background-image: -webkit-image-set('');\\\\n  background-image: image-set();\\\\n  background-image: image-set('');\\\\n  background-image: image-set(\\\\\\"\\\\\\");\\\\n  background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n  background-image: image-set(url());\\\\n  background-image: image-set(\\\\n    url()\\\\n  );\\\\n  background-image: image-set(URL());\\\\n  background-image: image-set(url(''));\\\\n  background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n  background-image: image-set(url('') 1x);\\\\n  background-image: image-set(1x);\\\\n  background-image: image-set(\\\\n    1x\\\\n  );\\\\n  background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n  /* Strings */\\\\n  background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\" 2x);\\\\n  background-image: image-set(\\\\\\"./img img.png\\\\\\" 1x, \\\\\\"./img img.png\\\\\\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\" 2x),\\\\n    image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\" 2x);\\\\n  background-image: image-set(\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 1x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\" 2x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\" 600dpi\\\\n  );\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \\" 1x);\\\\n\\\\n  /* With \`url\` function */\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x);\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x);\\\\n  background-image: -webkit-image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\") 600dpi\\\\n  );\\\\n  background-image: image-set(url(\\\\\\"./img img.png\\\\\\") 1x, url(\\\\\\"./img img.png\\\\\\") 2x);\\\\n\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n  /* Not allowed on windows */\\\\n  /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n  background: url(./img\\\\\\\\'img.png);\\\\n  background: url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png);\\\\n  background: url(./img\\\\\\\\(img.png);\\\\n  background: url(./img\\\\\\\\)img.png);\\\\n  background: url(./img\\\\\\\\ img.png);\\\\n  background: url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png);\\\\n\\\\n  background-image: image-set(\\\\n    /* Not allowed on windows */\\\\n    /* url(./img\\\\\\\\\\\\\\"img.png) 1x, */\\\\n    url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png) 2x,\\\\n    url(./img\\\\\\\\'img.png) 3x,\\\\n    url(./img\\\\\\\\(img.png) 4x,\\\\n    url(./img\\\\\\\\)img.png) 5x,\\\\n    url(./img\\\\\\\\ img.png) 6x,\\\\n    url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png) 7x\\\\n  );\\\\n}\\\\n\\\\n.class-class-class {\\\\n  background: url(\\\\\\"./img'''img.png\\\\\\");\\\\n  background: url(\\\\\\"./img'() img.png\\\\\\");\\\\n  background: url(\\\\\\"./img'img.png\\\\\\");\\\\n  background: url(\\\\\\"./img(img.png\\\\\\");\\\\n  background: url(\\\\\\"./img)img.png\\\\\\");\\\\n  background: url('./img img.png');\\\\n  background: url(\\\\\\"./img img.png\\\\\\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n  background: url('./img\\\\\\\\\\\\n(img.png');\\\\n  background: url('./img\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n(img.png');\\\\n}\\\\n\\\\n.other-test-case {\\\\n  background: url(\\\\\\"./img%27%27%27img.png\\\\\\");\\\\n  background: url(\\\\\\"./img%27%28%29%20img.png\\\\\\");\\\\n  background: url(\\\\\\"./img%27img.png\\\\\\");\\\\n  background: url(\\\\\\"./img%28img.png\\\\\\");\\\\n  background: url(\\\\\\"./img%29img.png\\\\\\");\\\\n  background: url(\\\\\\"./img%20img.png\\\\\\");\\\\n  background: url(./img%27%27%27img.png);\\\\n  background: url(./img%27%28%29%20img.png);\\\\n  background: url(./img%27img.png);\\\\n  background: url(./img%28img.png);\\\\n  background: url(./img%29img.png);\\\\n  background: url(./img%20img.png);\\\\n}\\\\n\\\\n.qqq {\\\\n  background: url('img.png');\\\\n}\\\\n\\\\n.www {\\\\n  background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\'img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\(img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\)img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\ img.png\\\\\\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n  background: url(\\\\\\"./img\\\\\\\\27img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\28%29 img.png\\\\\\");\\\\n  background: url(./img\\\\\\\\'\\\\\\\\28%29\\\\\\\\ img.png);\\\\n}\\\\n\\", \\"\\"]);
+___CSS_LOADER_EXPORT___.push([module.id, \\".class {\\\\n  background: url('./img.png');\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(./img.png);\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\n    \\\\\\"./img.png\\\\\\"\\\\n  );\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( './img.png' ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\\\\\"./img.png\\\\\\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( ./img.png ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(~package/img.png) url(./other-img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\\\\\"./img img.png\\\\\\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( './img img.png' ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(/img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,<svg xmlns=\\\\\\"http://www.w3.org/2000/svg\\\\\\"><filter id=\\\\\\"filter\\\\\\"><feGaussianBlur in=\\\\\\"SourceAlpha\\\\\\" stdDeviation=\\\\\\"0\\\\\\" /><feOffset dx=\\\\\\"1\\\\\\" dy=\\\\\\"2\\\\\\" result=\\\\\\"offsetblur\\\\\\" /><feFlood flood-color=\\\\\\"rgba(255,255,255,1)\\\\\\" /><feComposite in2=\\\\\\"offsetblur\\\\\\" operator=\\\\\\"in\\\\\\" /><feMerge><feMergeNode /><feMergeNode in=\\\\\\"SourceGraphic\\\\\\" /></feMerge></filter></svg>#filter');\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") format('woff'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") format('eot'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") format('truetype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \\") format('svg'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('embedded-opentype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n  body {\\\\n    background: url(\\\\\\"./img.png\\\\\\");\\\\n  }\\\\n}\\\\n\\\\na {\\\\n  content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n  content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n  background: green url('./img.png') xyz;\\\\n}\\\\n\\\\n.a {\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x)\\\\n}\\\\n\\\\n.class {\\\\n  background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('   ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\n  ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png?foo\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png?foo=bar\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png?foo=bar#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png?foo=bar#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\\\"./img.png?\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url('./img.png') url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\") url('./img.png');\\\\n}\\\\n\\\\n.class {\\\\n  background: ___CSS_LOADER_URL___;\\\\n  background: ___CSS_LOADER_URL___INDEX___;\\\\n  background: ___CSS_LOADER_URL___99999___;\\\\n  background: ___CSS_LOADER_IMPORT___;\\\\n  background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n  background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\");\\\\n}\\\\n\\\\n.root-relative {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\");\\\\n}\\\\n\\\\n.above-below {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n  background: url('~package/img.png');\\\\n}\\\\n\\\\n.aliases {\\\\n  background: url('~aliasesImg/img.png') ;\\\\n}\\\\n\\\\na {\\\\n  background: url(./nested/img.png);\\\\n}\\\\n\\\\na {\\\\n  background: url(nested/img.png);\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  /* Broken */\\\\n  background-image: -webkit-image-set();\\\\n  background-image: -webkit-image-set('');\\\\n  background-image: image-set();\\\\n  background-image: image-set('');\\\\n  background-image: image-set(\\\\\\"\\\\\\");\\\\n  background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n  background-image: image-set(url());\\\\n  background-image: image-set(\\\\n    url()\\\\n  );\\\\n  background-image: image-set(URL());\\\\n  background-image: image-set(url(''));\\\\n  background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n  background-image: image-set(url('') 1x);\\\\n  background-image: image-set(1x);\\\\n  background-image: image-set(\\\\n    1x\\\\n  );\\\\n  background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n  /* Strings */\\\\n  background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 2x);\\\\n  background-image: image-set(\\\\\\"./img img.png\\\\\\" 1x, \\\\\\"./img img.png\\\\\\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 2x),\\\\n    image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 2x);\\\\n  background-image: image-set(\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\" 1x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 2x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 600dpi\\\\n  );\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\" 1x);\\\\n\\\\n  /* With \`url\` function */\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x);\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x);\\\\n  background-image: -webkit-image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\") 600dpi\\\\n  );\\\\n  background-image: image-set(url(\\\\\\"./img img.png\\\\\\") 1x, url(\\\\\\"./img img.png\\\\\\") 2x);\\\\n\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n  /* Not allowed on windows */\\\\n  /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n  background: url(./img\\\\\\\\'img.png);\\\\n  background: url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png);\\\\n  background: url(./img\\\\\\\\(img.png);\\\\n  background: url(./img\\\\\\\\)img.png);\\\\n  background: url(./img\\\\\\\\ img.png);\\\\n  background: url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png);\\\\n\\\\n  background-image: image-set(\\\\n    /* Not allowed on windows */\\\\n    /* url(./img\\\\\\\\\\\\\\"img.png) 1x, */\\\\n    url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png) 2x,\\\\n    url(./img\\\\\\\\'img.png) 3x,\\\\n    url(./img\\\\\\\\(img.png) 4x,\\\\n    url(./img\\\\\\\\)img.png) 5x,\\\\n    url(./img\\\\\\\\ img.png) 6x,\\\\n    url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png) 7x\\\\n  );\\\\n}\\\\n\\\\n.class-class-class {\\\\n  background: url(\\\\\\"./img'''img.png\\\\\\");\\\\n  background: url(\\\\\\"./img'() img.png\\\\\\");\\\\n  background: url(\\\\\\"./img'img.png\\\\\\");\\\\n  background: url(\\\\\\"./img(img.png\\\\\\");\\\\n  background: url(\\\\\\"./img)img.png\\\\\\");\\\\n  background: url('./img img.png');\\\\n  background: url(\\\\\\"./img img.png\\\\\\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n  background: url('./img\\\\\\\\\\\\n(img.png');\\\\n  background: url('./img\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n(img.png');\\\\n}\\\\n\\\\n.other-test-case {\\\\n  background: url(\\\\\\"./img%27%27%27img.png\\\\\\");\\\\n  background: url(\\\\\\"./img%27%28%29%20img.png\\\\\\");\\\\n  background: url(\\\\\\"./img%27img.png\\\\\\");\\\\n  background: url(\\\\\\"./img%28img.png\\\\\\");\\\\n  background: url(\\\\\\"./img%29img.png\\\\\\");\\\\n  background: url(\\\\\\"./img%20img.png\\\\\\");\\\\n  background: url(./img%27%27%27img.png);\\\\n  background: url(./img%27%28%29%20img.png);\\\\n  background: url(./img%27img.png);\\\\n  background: url(./img%28img.png);\\\\n  background: url(./img%29img.png);\\\\n  background: url(./img%20img.png);\\\\n}\\\\n\\\\n.qqq {\\\\n  background: url('img.png');\\\\n}\\\\n\\\\n.www {\\\\n  background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\'img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\(img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\)img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\ img.png\\\\\\");\\\\n  background: url(\\\\\\"./\\\\\\\\69\\\\\\\\6D\\\\\\\\67.png\\\\\\");\\\\n  background: url(./\\\\\\\\69\\\\\\\\6D\\\\\\\\67.png);\\\\n  background: url(\\\\\\"./img\\\\\\\\27img.png\\\\\\");\\\\n  background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\28%29 img.png\\\\\\");\\\\n  background: url(./img\\\\\\\\'\\\\\\\\28%29\\\\\\\\ img.png);\\\\n}\\\\n\\", \\"\\"]);
 // Exports
 export default ___CSS_LOADER_EXPORT___;
 "
@@ -948,8 +905,8 @@ a {
   background: url(\\"./img\\\\(img.png\\");
   background: url(\\"./img\\\\)img.png\\");
   background: url(\\"./img\\\\ img.png\\");
-  background: url(/webpack/public/path/img.png);
-  background: url(/webpack/public/path/img.png);
+  background: url(\\"./\\\\69\\\\6D\\\\67.png\\");
+  background: url(./\\\\69\\\\6D\\\\67.png);
   background: url(\\"./img\\\\27img.png\\");
   background: url(\\"./img\\\\'\\\\28%29 img.png\\");
   background: url(./img\\\\'\\\\28%29\\\\ img.png);
@@ -1417,31 +1374,27 @@ import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
 import ___CSS_LOADER_URL_IMPORT_1___ from \\"./node_modules/package/img.png\\";
 import ___CSS_LOADER_URL_IMPORT_2___ from \\"./other-img.png\\";
 import ___CSS_LOADER_URL_IMPORT_3___ from \\"./img img.png\\";
-import ___CSS_LOADER_URL_IMPORT_4___ from \\"./img.png\\";
-import ___CSS_LOADER_URL_IMPORT_5___ from \\"./font.woff\\";
-import ___CSS_LOADER_URL_IMPORT_6___ from \\"./font.woff2\\";
-import ___CSS_LOADER_URL_IMPORT_7___ from \\"./font.eot\\";
-import ___CSS_LOADER_URL_IMPORT_8___ from \\"./node_modules/package/font.ttf\\";
-import ___CSS_LOADER_URL_IMPORT_9___ from \\"./font with spaces.eot\\";
-import ___CSS_LOADER_URL_IMPORT_10___ from \\"./font.svg\\";
-import ___CSS_LOADER_URL_IMPORT_11___ from \\"./font.woff2?foo=bar\\";
-import ___CSS_LOADER_URL_IMPORT_12___ from \\"./img1x.png\\";
-import ___CSS_LOADER_URL_IMPORT_13___ from \\"./img2x.png\\";
-import ___CSS_LOADER_URL_IMPORT_14___ from \\"./img.png?foo\\";
-import ___CSS_LOADER_URL_IMPORT_15___ from \\"./img.png?foo=bar\\";
-import ___CSS_LOADER_URL_IMPORT_16___ from \\"./img.png?\\";
-import ___CSS_LOADER_URL_IMPORT_17___ from \\"./img-simple.png\\";
-import ___CSS_LOADER_URL_IMPORT_18___ from \\"./img-simple.png\\";
-import ___CSS_LOADER_URL_IMPORT_19___ from \\"./img-simple.png\\";
-import ___CSS_LOADER_URL_IMPORT_20___ from \\"./img.png\\";
-import ___CSS_LOADER_URL_IMPORT_21___ from \\"./nested/img.png\\";
-import ___CSS_LOADER_URL_IMPORT_22___ from \\"./img3x.png\\";
-import ___CSS_LOADER_URL_IMPORT_23___ from \\"./img1x.png?foo=bar\\";
-import ___CSS_LOADER_URL_IMPORT_24___ from \\"./img'img.png\\";
-import ___CSS_LOADER_URL_IMPORT_25___ from \\"./img'''img.png\\";
-import ___CSS_LOADER_URL_IMPORT_26___ from \\"./img(img.png\\";
-import ___CSS_LOADER_URL_IMPORT_27___ from \\"./img)img.png\\";
-import ___CSS_LOADER_URL_IMPORT_28___ from \\"./img'() img.png\\";
+import ___CSS_LOADER_URL_IMPORT_4___ from \\"./font.woff\\";
+import ___CSS_LOADER_URL_IMPORT_5___ from \\"./font.woff2\\";
+import ___CSS_LOADER_URL_IMPORT_6___ from \\"./font.eot\\";
+import ___CSS_LOADER_URL_IMPORT_7___ from \\"./node_modules/package/font.ttf\\";
+import ___CSS_LOADER_URL_IMPORT_8___ from \\"./font with spaces.eot\\";
+import ___CSS_LOADER_URL_IMPORT_9___ from \\"./font.svg\\";
+import ___CSS_LOADER_URL_IMPORT_10___ from \\"./font.woff2?foo=bar\\";
+import ___CSS_LOADER_URL_IMPORT_11___ from \\"./img1x.png\\";
+import ___CSS_LOADER_URL_IMPORT_12___ from \\"./img2x.png\\";
+import ___CSS_LOADER_URL_IMPORT_13___ from \\"./img.png?foo\\";
+import ___CSS_LOADER_URL_IMPORT_14___ from \\"./img.png?foo=bar\\";
+import ___CSS_LOADER_URL_IMPORT_15___ from \\"./img.png?\\";
+import ___CSS_LOADER_URL_IMPORT_16___ from \\"./img-simple.png\\";
+import ___CSS_LOADER_URL_IMPORT_17___ from \\"./nested/img.png\\";
+import ___CSS_LOADER_URL_IMPORT_18___ from \\"./img3x.png\\";
+import ___CSS_LOADER_URL_IMPORT_19___ from \\"./img1x.png?foo=bar\\";
+import ___CSS_LOADER_URL_IMPORT_20___ from \\"./img'img.png\\";
+import ___CSS_LOADER_URL_IMPORT_21___ from \\"./img'''img.png\\";
+import ___CSS_LOADER_URL_IMPORT_22___ from \\"./img(img.png\\";
+import ___CSS_LOADER_URL_IMPORT_23___ from \\"./img)img.png\\";
+import ___CSS_LOADER_URL_IMPORT_24___ from \\"./img'() img.png\\";
 var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
 ___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
 var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
@@ -1454,37 +1407,33 @@ var ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_
 var ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);
 var ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);
 var ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);
-var ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);
-var ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___, { hash: \\"#svgFontName\\" });
-var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);
-var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { hash: \\"?#iefix\\" });
-var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \\"?#iefix\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \\"#svgFontName\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);
+var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___, { hash: \\"?#iefix\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___, { hash: \\"?#iefix\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);
 var ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);
 var ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);
 var ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);
-var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);
-var ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___, { hash: \\"#hash\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___, { hash: \\"#hash\\" });
+var ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);
 var ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);
 var ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);
-var ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);
-var ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___);
-var ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___);
-var ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___);
-var ___CSS_LOADER_URL_REPLACEMENT_26___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_27___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_28___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_29___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_30___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___, { needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_31___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { hash: \\"#hash\\", needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_32___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { hash: \\"?#iefix\\", needQuotes: true });
-var ___CSS_LOADER_URL_REPLACEMENT_33___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___);
+var ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_26___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___, { needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_27___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { hash: \\"#hash\\", needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_28___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { hash: \\"?#iefix\\", needQuotes: true });
+var ___CSS_LOADER_URL_REPLACEMENT_29___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);
+var ___CSS_LOADER_URL_REPLACEMENT_30___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___);
+var ___CSS_LOADER_URL_REPLACEMENT_31___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___);
+var ___CSS_LOADER_URL_REPLACEMENT_32___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___);
+var ___CSS_LOADER_URL_REPLACEMENT_33___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___);
 var ___CSS_LOADER_URL_REPLACEMENT_34___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_24___);
-var ___CSS_LOADER_URL_REPLACEMENT_35___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___);
-var ___CSS_LOADER_URL_REPLACEMENT_36___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_26___);
-var ___CSS_LOADER_URL_REPLACEMENT_37___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_27___);
-var ___CSS_LOADER_URL_REPLACEMENT_38___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_28___);
 // Module
-___CSS_LOADER_EXPORT___.push([module.id, \\".class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"\\\\n  );\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,<svg xmlns=\\\\\\"http://www.w3.org/2000/svg\\\\\\"><filter id=\\\\\\"filter\\\\\\"><feGaussianBlur in=\\\\\\"SourceAlpha\\\\\\" stdDeviation=\\\\\\"0\\\\\\" /><feOffset dx=\\\\\\"1\\\\\\" dy=\\\\\\"2\\\\\\" result=\\\\\\"offsetblur\\\\\\" /><feFlood flood-color=\\\\\\"rgba(255,255,255,1)\\\\\\" /><feComposite in2=\\\\\\"offsetblur\\\\\\" operator=\\\\\\"in\\\\\\" /><feMerge><feMergeNode /><feMergeNode in=\\\\\\"SourceGraphic\\\\\\" /></feMerge></filter></svg>#filter');\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \\") format('eot'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") format('truetype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\") format('svg'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\") format('embedded-opentype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n  body {\\\\n    background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  }\\\\n}\\\\n\\\\na {\\\\n  content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n  content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") xyz;\\\\n}\\\\n\\\\n.a {\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\") 2x)\\\\n}\\\\n\\\\n.class {\\\\n  background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('   ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\n  ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: ___CSS_LOADER_URL___;\\\\n  background: ___CSS_LOADER_URL___INDEX___;\\\\n  background: ___CSS_LOADER_URL___99999___;\\\\n  background: ___CSS_LOADER_IMPORT___;\\\\n  background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n  background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n}\\\\n\\\\n.root-relative {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\");\\\\n}\\\\n\\\\n.above-below {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n}\\\\n\\\\n.aliases {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\");\\\\n}\\\\n\\\\na {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\");\\\\n}\\\\n\\\\na {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\");\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  /* Broken */\\\\n  background-image: -webkit-image-set();\\\\n  background-image: -webkit-image-set('');\\\\n  background-image: image-set();\\\\n  background-image: image-set('');\\\\n  background-image: image-set(\\\\\\"\\\\\\");\\\\n  background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n  background-image: image-set(url());\\\\n  background-image: image-set(\\\\n    url()\\\\n  );\\\\n  background-image: image-set(URL());\\\\n  background-image: image-set(url(''));\\\\n  background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n  background-image: image-set(url('') 1x);\\\\n  background-image: image-set(1x);\\\\n  background-image: image-set(\\\\n    1x\\\\n  );\\\\n  background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n  /* Strings */\\\\n  background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x),\\\\n    image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x);\\\\n  background-image: image-set(\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_29___ + \\" 600dpi\\\\n  );\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\" 1x);\\\\n\\\\n  /* With \`url\` function */\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\") 2x);\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x);\\\\n  background-image: -webkit-image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\") 2x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\") 2x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\") 600dpi\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 2x);\\\\n\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n  /* Not allowed on windows */\\\\n  /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n\\\\n  background-image: image-set(\\\\n    \\\\n    \\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\") 2x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\") 3x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\") 4x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\") 5x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 6x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\") 7x\\\\n  );\\\\n}\\\\n\\\\n.class-class-class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n}\\\\n\\\\n.other-test-case {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.qqq {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.www {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \\");\\\\n}\\\\n\\", \\"\\"]);
+___CSS_LOADER_EXPORT___.push([module.id, \\".class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"\\\\n  );\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,<svg xmlns=\\\\\\"http://www.w3.org/2000/svg\\\\\\"><filter id=\\\\\\"filter\\\\\\"><feGaussianBlur in=\\\\\\"SourceAlpha\\\\\\" stdDeviation=\\\\\\"0\\\\\\" /><feOffset dx=\\\\\\"1\\\\\\" dy=\\\\\\"2\\\\\\" result=\\\\\\"offsetblur\\\\\\" /><feFlood flood-color=\\\\\\"rgba(255,255,255,1)\\\\\\" /><feComposite in2=\\\\\\"offsetblur\\\\\\" operator=\\\\\\"in\\\\\\" /><feMerge><feMergeNode /><feMergeNode in=\\\\\\"SourceGraphic\\\\\\" /></feMerge></filter></svg>#filter');\\\\n}\\\\n\\\\n.class {\\\\n  filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n  filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \\") format('woff'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('eot'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \\") format('truetype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") format('svg'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\") format('woff2'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\") format('embedded-opentype'),\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n  body {\\\\n    background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  }\\\\n}\\\\n\\\\na {\\\\n  content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n  content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n  background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") xyz;\\\\n}\\\\n\\\\n.a {\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x)\\\\n}\\\\n\\\\n.class {\\\\n  background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url('   ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(\\\\n  ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26' fill='%23007aff'><rect width='4' height='4'/><rect x='8' y='1' width='34' height='2'/><rect y='11' width='4' height='4'/><rect x='8' y='12' width='34' height='2'/><rect y='22' width='4' height='4'/><rect x='8' y='23' width='34' height='2'/></svg>\\\\\\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n  background: ___CSS_LOADER_URL___;\\\\n  background: ___CSS_LOADER_URL___INDEX___;\\\\n  background: ___CSS_LOADER_URL___99999___;\\\\n  background: ___CSS_LOADER_IMPORT___;\\\\n  background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n  background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.root-relative {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.above-below {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n}\\\\n\\\\n.aliases {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\na {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n}\\\\n\\\\na {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n}\\\\n\\\\n@font-face {\\\\n  src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n  /* Broken */\\\\n  background-image: -webkit-image-set();\\\\n  background-image: -webkit-image-set('');\\\\n  background-image: image-set();\\\\n  background-image: image-set('');\\\\n  background-image: image-set(\\\\\\"\\\\\\");\\\\n  background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n  background-image: image-set(url());\\\\n  background-image: image-set(\\\\n    url()\\\\n  );\\\\n  background-image: image-set(URL());\\\\n  background-image: image-set(url(''));\\\\n  background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n  background-image: image-set(url('') 1x);\\\\n  background-image: image-set(1x);\\\\n  background-image: image-set(\\\\n    1x\\\\n  );\\\\n  background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n  /* Strings */\\\\n  background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 2x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x),\\\\n    image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x);\\\\n  background-image: image-set(\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\" 1x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x,\\\\n    \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 600dpi\\\\n  );\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 1x);\\\\n  background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \\" 1x);\\\\n\\\\n  /* With \`url\` function */\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x);\\\\n  background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x);\\\\n  background-image: -webkit-image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x);\\\\n  background-image: image-set(\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_29___ + \\") 600dpi\\\\n  );\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 2x);\\\\n\\\\n  background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n  /* Not allowed on windows */\\\\n  /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n\\\\n  background-image: image-set(\\\\n    \\\\n    \\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\") 2x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\") 3x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\") 4x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\") 5x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 6x,\\\\n    url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\") 7x\\\\n  );\\\\n}\\\\n\\\\n.class-class-class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n}\\\\n\\\\n.other-test-case {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.qqq {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.www {\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n  background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n}\\\\n\\", \\"\\"]);
 // Exports
 export default ___CSS_LOADER_EXPORT___;
 "
diff --git a/test/fixtures/import/import-absolute.js b/test/fixtures/import/import-absolute.js
deleted file mode 100644
index c599c6d..0000000
--- a/test/fixtures/import/import-absolute.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import css from './import-absolute.css';
-
-__export__ = css;
-
-export default css;
diff --git a/test/fixtures/import/import.css b/test/fixtures/import/import.css
index 87f018e..d4406ac 100644
--- a/test/fixtures/import/import.css
+++ b/test/fixtures/import/import.css
@@ -107,3 +107,4 @@ st.css');
 \
 \
 ';
+@import url('!!../../helpers/string-loader.js?esModule=false!~package/tilde.css');
diff --git a/test/fixtures/modules/composes/composes.css b/test/fixtures/modules/composes/composes.css
index 53e137c..cd9e078 100644
--- a/test/fixtures/modules/composes/composes.css
+++ b/test/fixtures/modules/composes/composes.css
@@ -64,6 +64,11 @@
   composes: imported-alias from '~aliasesComposes/alias.css';
 }
 
+.alias-duplicate {
+  color: gainsboro;
+  composes: imported-alias from './alias.css';
+}
+
 .primary-selector {
   color: v-primary;
 }
diff --git a/test/fixtures/modules/tests-cases/issue-589/source.css b/test/fixtures/modules/tests-cases/issue-589/source.css
index c9ab6c7..f3ed67a 100644
--- a/test/fixtures/modules/tests-cases/issue-589/source.css
+++ b/test/fixtures/modules/tests-cases/issue-589/source.css
@@ -1,4 +1,4 @@
 body:before {
   content: '';
-  background: url('~!!file-loader?esModule=false!./img.png');
+  background: url('!!file-loader?esModule=false!./img.png');
 }
diff --git a/test/fixtures/url/url-absolute.js b/test/fixtures/url/url-absolute.js
deleted file mode 100644
index 536ef32..0000000
--- a/test/fixtures/url/url-absolute.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import css from './url-absolute.css';
-
-__export__ = css;
-
-export default css;
diff --git a/test/helpers/string-loader.js b/test/helpers/string-loader.js
new file mode 100644
index 0000000..a7b4a66
--- /dev/null
+++ b/test/helpers/string-loader.js
@@ -0,0 +1,5 @@
+function loader() {
+  return 'a { color: red };';
+}
+
+module.exports = loader;
diff --git a/test/import-option.test.js b/test/import-option.test.js
index 256446f..e0376e8 100644
--- a/test/import-option.test.js
+++ b/test/import-option.test.js
@@ -1,6 +1,3 @@
-import path from 'path';
-import fs from 'fs';
-
 import {
   compile,
   getCompiler,
@@ -132,27 +129,6 @@ describe('"import" option', () => {
     expect(getErrors(stats)).toMatchSnapshot('errors');
   });
 
-  it('should resolve absolute path', async () => {
-    // Create the file with absolute path
-    const fileDirectory = path.resolve(__dirname, 'fixtures', 'import');
-    const file = path.resolve(fileDirectory, 'import-absolute.css');
-    const absolutePath = path.resolve(fileDirectory, 'test.css');
-
-    fs.writeFileSync(file, `@import "${absolutePath}";`);
-
-    const compiler = getCompiler('./import/import-absolute.js');
-    const stats = await compile(compiler);
-
-    expect(
-      getModuleSource('./import/import-absolute.css', stats)
-    ).toMatchSnapshot('module');
-    expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot(
-      'result'
-    );
-    expect(getWarnings(stats)).toMatchSnapshot('warnings');
-    expect(getErrors(stats)).toMatchSnapshot('errors');
-  });
-
   it('should work resolve order: local -> node_modules -> alias', async () => {
     const compiler = getCompiler('./import/import-order.js');
     const stats = await compile(compiler);
diff --git a/test/modules-option.test.js b/test/modules-option.test.js
index 91cdcba..18aa3c7 100644
--- a/test/modules-option.test.js
+++ b/test/modules-option.test.js
@@ -750,7 +750,7 @@ describe('"modules" option', () => {
   it('should work with a modules.auto RegExp that returns "true"', async () => {
     const compiler = getCompiler('./modules/mode/modules.js', {
       modules: {
-        auto: /relative.module.css$/,
+        auto: /relative\.module\.css$/,
       },
     });
     const stats = await compile(compiler);
diff --git a/test/url-option.test.js b/test/url-option.test.js
index f3f5f70..730d954 100644
--- a/test/url-option.test.js
+++ b/test/url-option.test.js
@@ -1,6 +1,3 @@
-import path from 'path';
-import fs from 'fs';
-
 import {
   compile,
   getCompiler,
@@ -70,29 +67,6 @@ describe('"url" option', () => {
     expect(getErrors(stats)).toMatchSnapshot('errors');
   });
 
-  it('should resolve absolute path', async () => {
-    // Create the file with absolute path
-    const fileDirectory = path.resolve(__dirname, 'fixtures', 'url');
-    const file = path.resolve(fileDirectory, 'url-absolute.css');
-    const absoluteUrlpath = path.resolve(fileDirectory, 'img.png');
-
-    const code = `\n.background {background: url(${absoluteUrlpath}); }`;
-
-    fs.writeFileSync(file, code);
-
-    const compiler = getCompiler('./url/url-absolute.js');
-    const stats = await compile(compiler);
-
-    expect(getModuleSource('./url/url-absolute.css', stats)).toMatchSnapshot(
-      'module'
-    );
-    expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot(
-      'result'
-    );
-    expect(getWarnings(stats)).toMatchSnapshot('warnings');
-    expect(getErrors(stats)).toMatchSnapshot('errors');
-  });
-
   it('should emit warning when unresolved import', async () => {
     const compiler = getCompiler('./url/url-unresolved.js');
     const stats = await compile(compiler);