module.exports = /******/ (function(modules) {
  // webpackBootstrap
  /******/ // The module cache
  /******/ var installedModules = {} // The require function
  /******/
  /******/ /******/ function __webpack_require__(moduleId) {
    /******/
    /******/ // Check if module is in cache
    /******/ if (installedModules[moduleId]) {
      /******/ return installedModules[moduleId].exports
      /******/
    } // Create a new module (and put it into the cache)
    /******/ /******/ var module = (installedModules[moduleId] = {
      /******/ i: moduleId,
      /******/ l: false,
      /******/ exports: {}
      /******/
    }) // Execute the module function
    /******/
    /******/ /******/ modules[moduleId].call(
      module.exports,
      module,
      module.exports,
      __webpack_require__
    ) // Flag the module as loaded
    /******/
    /******/ /******/ module.l = true // Return the exports of the module
    /******/
    /******/ /******/ return module.exports
    /******/
  } // expose the modules object (__webpack_modules__)
  /******/
  /******/
  /******/ /******/ __webpack_require__.m = modules // expose the module cache
  /******/
  /******/ /******/ __webpack_require__.c = installedModules // define getter function for harmony exports
  /******/
  /******/ /******/ __webpack_require__.d = function(exports, name, getter) {
    /******/ if (!__webpack_require__.o(exports, name)) {
      /******/ Object.defineProperty(exports, name, {
        /******/ configurable: false,
        /******/ enumerable: true,
        /******/ get: getter
        /******/
      })
      /******/
    }
    /******/
  } // getDefaultExport function for compatibility with non-harmony modules
  /******/
  /******/ /******/ __webpack_require__.n = function(module) {
    /******/ var getter =
      module && module.__esModule
        ? /******/ function getDefault() {
            return module['default']
          }
        : /******/ function getModuleExports() {
            return module
          }
    /******/ __webpack_require__.d(getter, 'a', getter)
    /******/ return getter
    /******/
  } // Object.prototype.hasOwnProperty.call
  /******/
  /******/ /******/ __webpack_require__.o = function(object, property) {
    return Object.prototype.hasOwnProperty.call(object, property)
  } // __webpack_public_path__
  /******/
  /******/ /******/ __webpack_require__.p = '' // Load entry module and return exports
  /******/
  /******/ /******/ return __webpack_require__((__webpack_require__.s = 2))
  /******/
})(
  /************************************************************************/
  /******/ [
    /* 0 */
    /***/ function(module, exports, __webpack_require__) {
      'use strict'

      Object.defineProperty(exports, '__esModule', { value: true })
      const http = __webpack_require__(8)
      const EventEmitter = __webpack_require__(9)
      const url_1 = __webpack_require__(10)
      const request = __webpack_require__(11)
      const config_1 = __webpack_require__(1)
      /// <reference path="./index.d.ts" />
      const HOST = 'http://127.0.0.1'
      const LOGIN_STATUS = {
        SUCCESS: 'SUCCESS',
        FAIL: 'FAIL',
        CANCEL: 'CANCEL',
        REQUEST: 'REQUEST',
        PENDING: 'PENDING',
        EXPIRED: 'EXPIRED'
      }
      // ===== Network connections
      let IDE_PORT
      let CLI_PORT
      class Updater extends EventEmitter {
        constructor(onUpdate) {
          super()
          this.onUpdate = onUpdate
        }
        getPort() {
          return this.port
        }
        update(port) {
          this.port = port
          this.onUpdate(port)
          this.emit('update', port)
        }
        reset() {
          this.port = undefined
        }
      }
      exports.idePortManager = new Updater(port => (IDE_PORT = port))
      exports.cliPortManager = new Updater(port => (CLI_PORT = port))
      let HTTP_PROXY_PORT = 3799
      function tryListen(cb) {
        let port = HTTP_PROXY_PORT
        let server = http.createServer(() => {})
        server.on('error', err => {
          HTTP_PROXY_PORT++
          tryListen(cb)
        })
        server.listen(port, '127.0.0.1', err => {
          server.once('close', () => {
            HTTP_PROXY_PORT = port + 1
            cb(port)
          })
          server.close()
        })
      }
      function getAvailablePort() {
        return new Promise(tryListen)
      }
      exports.getAvailablePort = getAvailablePort
      function startServer(port) {
        return new Promise((resolve, reject) => {
          try {
            // http
            const server = http.createServer((req, res) => {
              try {
                if (!req.url) {
                  return
                }
                const match = req.url.match(/^\/updatePort\?port=(\d+)$/)
                if (
                  match &&
                  match[1] &&
                  parseInt(match[1]) &&
                  !isNaN(parseInt(match[1]))
                ) {
                  const idePort = parseInt(match[1])
                  exports.idePortManager.update(idePort)
                  console.log(
                    `IDE server has started, listening on http://127.0.0.1:${idePort}`
                  )
                  res.statusCode = 200
                  res.end()
                } else {
                  const chainReq = http
                    .request(
                      {
                        host: HOST,
                        port: IDE_PORT,
                        path: req.url,
                        method: req.method
                      },
                      chainRes => {
                        chainRes.pipe(res)
                      }
                    )
                    .end()
                }
              } catch (err) {
                res.end()
              }
            })
            server.listen(port, '127.0.0.1')
            resolve()
          } catch (err) {
            reject(err)
          }
        })
      }
      exports.startServer = startServer
      function getIDEPort() {
        return new Promise((resolve, reject) => {
          if (IDE_PORT) {
            resolve(IDE_PORT)
            return
          }
          exports.idePortManager.once('update', port => {
            resolve(port)
          })
        })
      }
      exports.getIDEPort = getIDEPort
      function notifyCLIPort(cliPort, idePort) {
        return new Promise(async (resolve, reject) => {
          try {
            const res = await request({
              url: `${HOST}:${idePort}/updatePort?port=${cliPort}`,
              timeout: 1000,
              resolveWithFullResponse: true
            })
            if (res.statusCode === 200) {
              exports.idePortManager.update(idePort)
              resolve()
            } else {
              console.error('err:', res)
              reject(res.status)
            }
          } catch (err) {
            if (
              err &&
              err.error &&
              (err.error.code === 'ETIMEOUT' ||
                err.error.code === 'ECONNREFUSED')
            ) {
              // ide has not been started
              reject(err)
            } else {
              reject(err)
            }
          }
        })
      }
      exports.notifyCLIPort = notifyCLIPort
      function openIDE(projectpath) {
        return new Promise(async (resolve, reject) => {
          try {
            const port = await getIDEPort()
            const params = createURLSearchParams()
            if (projectpath) {
              params.set('projectpath', encodeURIComponent(projectpath))
            }
            const res = await request({
              url: `${HOST}:${port}/open?${params.toString()}`,
              resolveWithFullResponse: true
            })
            if (res.statusCode === 200) {
              resolve()
            } else {
              reject(new Error('Fail to open IDE'))
            }
          } catch (err) {
            reject(err)
          }
        })
      }
      exports.openIDE = openIDE
      function checkIDEStatus() {
        return new Promise(async (resolve, reject) => {
          if (!IDE_PORT) {
            resolve(config_1.IDEStatus.Offline)
            exports.idePortManager.reset()
          } else {
            try {
              await notifyCLIPort(CLI_PORT, IDE_PORT)
              resolve(config_1.IDEStatus.Online)
            } catch (err) {
              resolve(config_1.IDEStatus.Offline)
              exports.idePortManager.reset()
            }
          }
        })
      }
      exports.checkIDEStatus = checkIDEStatus
      // ==== IDE commands
      exports.login = (format, QRCodeDest) =>
        new Promise(async (resolve, reject) => {
          const port = await getIDEPort()
          try {
            // 1. QR
            format = format || 'terminal'
            const params = createURLSearchParams()
            params.set('format', format)
            if (QRCodeDest) {
              params.set('qroutput', encodeURIComponent(QRCodeDest))
            }
            const body = await request({
              url: `${HOST}:${port}/login?${params.toString()}`
            })
            if (!QRCodeDest) {
              printQRCode(body)
            }
          } catch (err) {
            reject(err.toString())
          }
          try {
            // 2. poll
            await pollHelper()
          } catch (err) {
            reject(err.toString())
          }
          resolve()
          function pollHelper() {
            return new Promise((resolve, reject) => {
              poll(resolve, reject)
            })
          }
          async function poll(resolve, reject) {
            try {
              let body = await request({
                url: `${HOST}:${port}/loginresult`
              })
              if (body) {
                body = JSON.parse(body)
                switch (body.loginStatus) {
                  case LOGIN_STATUS.SUCCESS: {
                    resolve()
                    break
                  }
                  case LOGIN_STATUS.PENDING: {
                    setTimeout(poll.bind(this), 300, resolve, reject)
                    break
                  }
                  case LOGIN_STATUS.CANCEL: {
                    reject('login cancelled')
                    break
                  }
                  case LOGIN_STATUS.EXPIRED: {
                    reject('login expired')
                    break
                  }
                  case LOGIN_STATUS.FAIL: {
                    reject('login failed')
                    break
                  }
                  default: {
                    reject('login failed')
                    break
                  }
                }
              } else {
                reject('Error while getting login result')
              }
            } catch (err) {
              reject(err)
            }
          }
        })
      exports.preview = options =>
        new Promise(async (resolve, reject) => {
          const { projectpath, format = 'terminal', qroutput } = options
          if (!projectpath) {
            reject('project path must be provided')
            return
          }
          const port = await getIDEPort()
          try {
            const params = createURLSearchParams()
            params.set('projectpath', encodeURIComponent(projectpath))
            params.set('format', format)
            params.set('qroutput', encodeURIComponent(qroutput || ''))
            const body = await request({
              url: `${HOST}:${port}/preview?${params.toString()}`
            })
            if (!qroutput) {
              printQRCode(body)
            }
            resolve()
          } catch (err) {
            reject(err.toString())
          }
        })
      exports.upload = options =>
        new Promise(async (resolve, reject) => {
          const {
            projectpath,
            version,
            desc,
            format = 'terminal',
            qroutput
          } = options
          if (!projectpath || !version) {
            reject('version and project path must be provided')
            return
          }
          const port = await getIDEPort()
          try {
            const params = createURLSearchParams()
            params.set('projectpath', encodeURIComponent(projectpath))
            params.set('version', encodeURIComponent(version))
            params.set('desc', encodeURIComponent(desc || ''))
            const response = await request({
              url: `${HOST}:${port}/upload?${params.toString()}`,
              resolveWithFullResponse: true
            })
            if (response.statusCode !== 200) {
              reject(response.body)
            }
            if (!qroutput) {
              console.log(response.body)
            }
            resolve()
          } catch (err) {
            reject(err)
          }
        })
      exports.autoTest = options =>
        new Promise(async (resolve, reject) => {
          const { projectpath } = options
          if (!projectpath) {
            reject('project path must be provided')
            return
          }
          const port = await getIDEPort()
          try {
            const params = createURLSearchParams()
            params.set('projectpath', encodeURIComponent(projectpath))
            const response = await request({
              url: `${HOST}:${port}/test?${params.toString()}`,
              resolveWithFullResponse: true
            })
            if (response.statusCode !== 200) {
              reject(response.body)
            }
            resolve()
          } catch (err) {
            reject(err && err.error)
          }
        })
      // utils
      function printQRCode(code) {
        const len = code.length
        const matches = code.match(/.+?\n/g)
        const lastLine = code.match(/[^\n]+?$/)
        if (!matches) {
          console.log(code)
          return
        }
        function getCutPosition(len, matches) {
          const logMaxLen = 8000
          let i = 1
          while (len / i > logMaxLen) {
            i++
          }
          if (i == 1) return []
          let linesLen = matches.length + 1
          let chunkSize = Math.floor(linesLen / i)
          let positions = []
          for (let j = 1; j < i; j++) {
            positions.push(chunkSize * j)
          }
          return positions
        }
        const positions = getCutPosition(len, matches)
        if (positions.length === 0) {
          console.log(code)
        } else {
          for (var i = 0; i < positions.length; i++) {
            console.log(
              matches
                .slice(positions[i - 1] || 0, positions[i])
                .join('')
                .slice(0, -1)
            )
          }
          console.log(
            matches.slice(positions[positions.length - 1]).join('') + lastLine
          )
        }
      }
      function createURLSearchParams() {
        const init = {
          cli: '1'
        }
        if (global.from) {
          init.from = global.from
        }
        return new url_1.URLSearchParams(init)
      }
      //# sourceMappingURL=data:application/json;base64, 

      /***/
    },
    /* 1 */
    /***/ function(module, exports, __webpack_require__) {
      'use strict'

      Object.defineProperty(exports, '__esModule', { value: true })
      var IDEStatus
      ;(function(IDEStatus) {
        IDEStatus[(IDEStatus['Online'] = 0)] = 'Online'
        IDEStatus[(IDEStatus['Offline'] = 1)] = 'Offline'
      })((IDEStatus = exports.IDEStatus || (exports.IDEStatus = {})))
      //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vanMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLDZDQUFNLENBQUE7SUFDTiwrQ0FBTyxDQUFBO0FBQ1QsQ0FBQyxFQUhXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBR3BCIn0=

      /***/
    },
    /* 2 */
    /***/ function(module, exports, __webpack_require__) {
      'use strict'

      Object.defineProperty(exports, '__esModule', { value: true })
      const fs = __webpack_require__(3)
      const path = __webpack_require__(4)
      const program = __webpack_require__(5)
      const ide = __webpack_require__(6)
      const network = __webpack_require__(0)
      const isMac = process.platform === 'darwin'
      process.on('uncaughtException', err => {
        console.error(`Runtime error: ${err.name} \n ${err.toString()}`)
      })
      ;(async function() {
        // let spinner = ora('Initializing')
        /*
    var questions = [
      {
        type: 'input',
        name: 'first_name',
        message: 'What\'s your first name'
      },
      {
        type: 'input',
        name: 'last_name',
        message: 'What\'s your last name',
        default: function () {
          return 'Doe';
        }
      }
    ];
  
    inquirer.prompt(questions).then(function (answers) {
      console.log(JSON.stringify(answers, null, '  '));
    });
  
    await new Promise((resolve, reject) => setTimeout(resolve, 20000))
    */
        try {
          const isDev = process.argv.indexOf('--idev') > -1
          global.isDev = isDev
          // 0. pre-requisite
          try {
            if (!isDev) {
              if (isMac) {
                const packageJson = JSON.parse(
                  fs.readFileSync(
                    path.join(__dirname, '../../../package.json'),
                    'utf8'
                  )
                )
                global.userDirName = packageJson.name
                global.appname = packageJson.appname
                global.userDirPath = path.join(
                  process.env.HOME || '~',
                  `Library/Application Support/${global.userDirName}/Default`
                )
                global.appPath = path.join(
                  __dirname,
                  `../../../../../MacOS/${global.appname}`
                )
              } else {
                const packageJson = JSON.parse(
                  fs.readFileSync(
                    path.join(__dirname, '../../../package.json'),
                    'utf8'
                  )
                )
                global.userDirName = packageJson.name
                global.appname = packageJson.name
                global.userDirPath = path.join(
                  process.env.USERPROFILE || '~',
                  `AppData/Local/${global.userDirName}/User Data/Default`
                )
                global.appPath = `./${global.appname}.exe`
              }
            } else {
              if (isMac) {
                const packageJson = JSON.parse(
                  fs.readFileSync(
                    path.join(__dirname, '../../../../../dist/package.json'),
                    'utf8'
                  )
                )
                global.userDirName = packageJson.name
                global.appname = packageJson.appname
                global.userDirPath = path.join(
                  process.env.HOME || '~',
                  `Library/Application Support/${global.userDirName}/Default`
                )
                global.appPath = `../../../MacOS/${global.appname}`
              } else {
                const packageJson = JSON.parse(
                  fs.readFileSync(
                    path.join(__dirname, '../../../../../dist/package.json'),
                    'utf8'
                  )
                )
                global.userDirName = packageJson.name
                global.appname = packageJson.name
                global.userDirPath = path.join(
                  process.env.USERPROFILE || '~',
                  `AppData/Local/${global.userDirName}/User Data/Default`
                )
                global.appPath = `./${global.appname}.exe`
              }
            }
          } catch (err) {
            console.log('File corrupted, please re-install')
          }
          // 0. Pick out the hidden options, don't let them parsed by commander
          const alteredArgv = process.argv.slice()
          let from = ''
          let ind = alteredArgv.indexOf('--inspect')
          if (ind > -1) alteredArgv.splice(ind, 1)
          ind = alteredArgv.indexOf('--idev')
          if (ind > -1) alteredArgv.splice(ind, 1)
          ind = alteredArgv.indexOf('--nw')
          if (ind > -1) alteredArgv.splice(ind, 2)
          ind = alteredArgv.indexOf('-f')
          if (ind > -1) {
            from = alteredArgv[ind + 1]
            alteredArgv.splice(ind, 2)
          } else {
            ind = alteredArgv.indexOf('--from')
            if (ind > -1) {
              from = alteredArgv[ind + 1]
              alteredArgv.splice(ind, 2)
            }
          }
          if (from) {
            global.from = from
          }
          program
            .version('1.0.0')
            .allowUnknownOption()
            .option(
              '-o, --open [path]',
              'Open IDE. If path is specified, IDE will try to open the project in the path.'
            )
            .option('-l, --login', 'Login')
            .option(
              '--login-qr-output [format@path]',
              'Customize output of QR Code. format can be terminal or base64. If path is used, QR code will be written to the path'
            )
            .option('-p, --preview <project_root>', 'Preview mini program')
            .option(
              '--preview-qr-output [format@path]',
              'Customize output of QR Code. format can be terminal or base64. If path is used, QR code will be written to the path'
            )
            .option(
              '-u, --upload <version@project_root>',
              'Upload mini program'
            )
            .option(
              '--upload-desc <desc>',
              'Description of the uploaded version'
            )
            .option('-t, --test <project_root>', 'Request an auto mobile test')
            .parse(alteredArgv)
          // spinner.start()
          console.info('Initializing...')
          let port
          try {
            // 1. get port
            port = await network.getAvailablePort()
            network.cliPortManager.update(port)
            // 2. start server
            await network.startServer(port)
            // console.log(`server started, listening on http://127.0.0.1:${port}`)
            // 3. write to user dir
            let appname = '微信web开发者工具'
            let appdataDir = global.userDirPath
            let cliPortFile = path.join(appdataDir, '.cli')
            try {
              fs.writeFileSync(cliPortFile, port, 'utf8')
            } catch (err) {
              console.error(
                'Please ensure that the IDE has been properly installed'
              )
              throw err
            }
            // 4. try to get IDE port
            let idePortFile = path.join(appdataDir, '.ide')
            let idePort
            try {
              console.log(`idePortFile: ${idePortFile}`)
              idePort = parseInt(fs.readFileSync(idePortFile, 'utf8'))
              await network.notifyCLIPort(port, idePort)
              console.log(
                `IDE server has started, listening on http://127.0.0.1:${idePort}`
              )
            } catch (err) {
              // no ide port file or ide not started
              console.info('starting ide...')
              ide.start(port, isDev)
            }
            await network.getIDEPort()
            console.log('initialization finished')
          } catch (err) {
            console.error('init error: ', err)
            return
          }
          // 1. Open IDE
          if (program.open) {
            if (typeof program.open === 'boolean') {
              await ide.open()
            } else {
              await ide.open(program.open)
            }
            console.log('open IDE success')
          }
          // 2. Login
          if (program.login) {
            // spinner.text = 'Initializing login'
            console.info('initializing login...')
            if (program.loginQrOutput) {
              const loginQrOutput = program.loginQrOutput
              const fragments =
                (loginQrOutput.match &&
                  loginQrOutput.match(/^(.+?)(?:@(.*))?$/)) ||
                []
              await network.login(fragments[1], fragments[2])
            } else {
              await network.login()
            }
            console.log('login success')
          }
          // 3. Preview
          if (program.preview) {
            // spinner.text = 'Initializing preview'
            console.info('preparing preview...')
            if (program.previewQrOutput) {
              const previewQrOutput = program.previewQrOutput
              // const fragments = (program.previewQrOutput.split && program.previewQrOutput.split('@')) || []
              const fragments =
                (previewQrOutput.match &&
                  previewQrOutput.match(/^(.+?)(?:@(.*))?$/)) ||
                []
              await network.preview({
                projectpath: program.preview,
                format: fragments[1],
                qroutput: fragments[2]
              })
            } else {
              await network.preview({
                projectpath: program.preview
              })
            }
            console.log('preview success')
          }
          // 4. Upload
          if (program.upload) {
            // spinner.text = 'Initializing upload'
            console.info('uploading project...')
            const upload = program.upload
            // const mainFragments = (program.upload.split && program.upload.split('@')) || []
            const mainFragments =
              (upload.match && upload.match(/^(.+?)(?:@(.*))?$/)) || []
            if (program.uploadQrOutput) {
              const uploadQrOutput = program.uploadQrOutput
              // const qrFragments = (program.uploadQrOutput.split && program.uploadQrOutput.split('@')) || []
              const qrFragments =
                (uploadQrOutput.match &&
                  uploadQrOutput.match(/^(.+?)(?:@(.*))?$/)) ||
                []
              await network.upload({
                version: mainFragments[1],
                projectpath: mainFragments[2],
                format: qrFragments[1],
                qroutput: qrFragments[2],
                desc: program.uploadDesc
              })
            } else {
              await network.upload({
                version: mainFragments[1],
                projectpath: mainFragments[2],
                desc: program.uploadDesc
              })
            }
            console.log('upload success')
          }
          // 5. Auto-test
          if (program.test) {
            console.info('test project...')
            const test = program.test
            if (!test || test === true) {
              console.log('projectpath must be provided')
            } else {
              await network.autoTest({
                projectpath: program.test
              })
              console.log('submit test success')
            }
          }
          // 6. Interactive
          // 7. server
          // Exit
          if (!program.interactive && !program.server) {
            // spinner.stop()
            process.exit(0)
          }
        } catch (err) {
          // spinner.stop()
          console.error(err)
          process.exit(-1)
        }
      })()
      //# sourceMappingURL=data:application/json;base64, 

      /***/
    },
    /* 3 */
    /***/ function(module, exports) {
      module.exports = require('fs')

      /***/
    },
    /* 4 */
    /***/ function(module, exports) {
      module.exports = require('path')

      /***/
    },
    /* 5 */
    /***/ function(module, exports) {
      module.exports = require('commander')

      /***/
    },
    /* 6 */
    /***/ function(module, exports, __webpack_require__) {
      'use strict'

      Object.defineProperty(exports, '__esModule', { value: true })
      const child_process = __webpack_require__(7)
      const network = __webpack_require__(0)
      const config_1 = __webpack_require__(1)
      /// <reference path="./index.d.ts"/>
      const isMac = process.platform === 'darwin'
      const AppRelativePath = {
        Dev: '../../../../dist'
      }
      exports.start = (port, isDev) => {
        if (isDev) {
          let nw
          let nwInd = process.argv.indexOf('--nw')
          if (nwInd > -1) {
            nw = process.argv[nwInd + 1]
          } else {
            nw = 'nw'
          }
          const shouldInspect = process.argv.indexOf('--inspect') > -1
          const subprocess = child_process.spawn(
            nw,
            ['.', '--cli', port.toString(), shouldInspect ? '--inspect' : ''],
            {
              // cwd: '/Users/daniel/Projects/wx/ide/main/dist',
              cwd: AppRelativePath.Dev,
              detached: true,
              stdio: [0, 1, 2]
            }
          )
          subprocess.unref()
        } else {
          const subprocess = child_process.spawn(
            global.appPath,
            ['--cli', port.toString()],
            {
              detached: true,
              stdio: 'ignore'
            }
          )
          subprocess.unref()
        }
      }
      exports.open = projectpath =>
        new Promise(async (resolve, reject) => {
          try {
            const status = await network.checkIDEStatus()
            if (status === config_1.IDEStatus.Offline) {
              const port = network.cliPortManager.getPort()
              if (port) {
                exports.start(port, process.argv.indexOf('--idev') > -1)
                await network.getIDEPort()
                await network.openIDE(projectpath)
              } else {
                reject('CLI error')
              }
            } else {
              await network.openIDE(projectpath)
              resolve()
            }
          } catch (err) {
            reject(err ? err.toString() : '')
          }
        })
      //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vanMvdXRpbHMvaWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsK0NBQThDO0FBQzlDLHFDQUFvQztBQUNwQyxzQ0FBcUM7QUFDckMsb0NBQW9DO0FBRXBDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFBO0FBRTNDLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxrQkFBa0I7Q0FDeEIsQ0FBQTtBQUVZLFFBQUEsS0FBSyxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQWMsRUFBRSxFQUFFO0lBRXBELEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDVixJQUFJLEVBQVUsQ0FBQTtRQUVkLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3hDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDOUIsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNYLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUM1RCxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM1RyxrREFBa0Q7WUFDbEQsR0FBRyxFQUFFLGVBQWUsQ0FBQyxHQUFHO1lBQ3hCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUM7U0FDZixDQUFDLENBQUE7UUFDRixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDcEIsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFO1lBQ2pGLFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLFFBQVE7U0FDaEIsQ0FBQyxDQUFBO1FBQ0YsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3BCLENBQUM7QUFDSCxDQUFDLENBQUE7QUFFWSxRQUFBLElBQUksR0FBRyxDQUFDLFdBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDbEYsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDN0MsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLGtCQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBRTdDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ1QsYUFBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNoRCxNQUFNLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQTtnQkFDMUIsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3BDLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDckIsQ0FBQztRQUVILENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNsQyxPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUM7SUFDSCxDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDbkMsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFBIn0=

      /***/
    },
    /* 7 */
    /***/ function(module, exports) {
      module.exports = require('child_process')

      /***/
    },
    /* 8 */
    /***/ function(module, exports) {
      module.exports = require('http')

      /***/
    },
    /* 9 */
    /***/ function(module, exports) {
      module.exports = require('events')

      /***/
    },
    /* 10 */
    /***/ function(module, exports) {
      module.exports = require('url')

      /***/
    },
    /* 11 */
    /***/ function(module, exports) {
      module.exports = require('request-promise-native')

      /***/
    }
    /******/
  ]
)
