text: (function () {
    var a, b, c, d, e, f, g, h, i = [].slice,
      j = {}.hasOwnProperty,
      k = function (a, b) {
        function c () {
          this.constructor = a
        }
        for (var d in b) j.call(b, d) && (a[d] = b[d])
        return c.prototype = b.prototype, a.prototype = new c(), a.__super__ = b.prototype, a
      }
    g = function () {}, b = (function () {
      function a () {}
      return a.prototype.addEventListener = a.prototype.on, a.prototype.on = function (a, b) {
        return this._callbacks = this._callbacks || {}, this._callbacks[a] || (this._callbacks[a] = []), this._callbacks[a].push(b), this
      }, a.prototype.emit = function () {
        var a, b, c, d, e, f
        if (d = arguments[0], a = arguments.length >= 2 ? i.call(arguments, 1) : [], this._callbacks = this._callbacks || {}, c = this._callbacks[d]) { for (e = 0, f = c.length; f > e; e++) b = c[e], b.apply(this, a) }
        return this
      }, a.prototype.removeListener = a.prototype.off, a.prototype.removeAllListeners = a.prototype.off, a.prototype.removeEventListener = a.prototype.off, a.prototype.off = function (a, b) {
        var c, d, e, f, g
        if (!this._callbacks || arguments.length === 0) return this._callbacks = {}, this
        if (d = this._callbacks[a], !d) return this
        if (arguments.length === 1) return delete this._callbacks[a], this
        for (e = f = 0, g = d.length; g > f; e = ++f) {
          if (c = d[e], c === b) {
            d.splice(e, 1)
            break
          }
        }
        return this
      }, a
    }()), a = (function (a) {
      function c (a, b) {
        var e, f, g
        if (this.element = a, this.version = c.version, this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\n*/g, ''), this.clickableElements = [], this.listeners = [], this.files = [], typeof this.element === 'string' && (this.element = document.querySelector(this.element)), !this.element || this.element.nodeType == null) throw new Error('Invalid dropzone element.')
        if (this.element.dropzone) throw new Error('Dropzone already attached.')
        if (c.instances.push(this), this.element.dropzone = this, e = (g = c.optionsForElement(this.element)) != null ? g : {}, this.options = d({}, this.defaultOptions, e, b != null ? b : {}), this.options.forceFallback || !c.isBrowserSupported()) return this.options.fallback.call(this)
        if (this.options.url == null && (this.options.url = this.element.getAttribute('action')), !this.options.url) throw new Error('No URL provided.')
        if (this.options.acceptedFiles && this.options.acceptedMimeTypes) throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.")
        this.options.acceptedMimeTypes && (this.options.acceptedFiles = this.options.acceptedMimeTypes, delete this.options.acceptedMimeTypes), this.options.method = this.options.method.toUpperCase(), (f = this.getExistingFallback()) && f.parentNode && f.parentNode.removeChild(f), this.options.previewsContainer !== !1 && (this.previewsContainer = this.options.previewsContainer ? c.getElement(this.options.previewsContainer, 'previewsContainer') : this.element), this.options.clickable && (this.clickableElements = this.options.clickable === !0 ? [this.element] : c.getElements(this.options.clickable, 'clickable')), this.init()
      }
      var d, e
      return k(c, a), c.prototype.Emitter = b, c.prototype.events = ['drop', 'dragstart', 'dragend', 'dragenter', 'dragover', 'dragleave', 'addedfile', 'addedfiles', 'removedfile', 'thumbnail', 'error', 'errormultiple', 'processing', 'processingmultiple', 'uploadprogress', 'totaluploadprogress', 'sending', 'sendingmultiple', 'success', 'successmultiple', 'canceled', 'canceledmultiple', 'complete', 'completemultiple', 'reset', 'maxfilesexceeded', 'maxfilesreached', 'queuecomplete'], c.prototype.defaultOptions = {
        url: null,
        method: 'post',
        withCredentials: !1,
        parallelUploads: 2,
        uploadMultiple: !1,
        maxFilesize: 32,
        paramName: 'file',
        createImageThumbnails: !0,
        maxThumbnailFilesize: 1,
        thumbnailWidth: 300,
        thumbnailHeight: 300,
        filesizeBase: 1e3,
        maxFiles: 1,
        params: {},
        clickable: !0,
        ignoreHiddenFiles: !0,
        acceptedFiles: null,
        acceptedMimeTypes: null,
        autoProcessQueue: !0,
        autoQueue: !0,
        addRemoveLinks: !1,
        previewsContainer: null,
        hiddenInputContainer: 'body',
        capture: null,
        renameFilename: null,
        dictDefaultMessage: 'Drop files here to upload',
        dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.",
        dictFallbackText: 'Please use the fallback form below to upload your files like in the olden days.',
        dictFileTooBig: 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
        dictInvalidFileType: "You can't upload files of this type.",
        dictResponseError: 'Server responded with {{statusCode}} code.',
        dictCancelUpload: 'Cancel upload',
        dictCancelUploadConfirmation: 'Are you sure you want to cancel this upload?',
        dictRemoveFile: 'Remove file',
        dictRemoveFileConfirmation: null,
        dictMaxFilesExceeded: 'No puedes subir mas archivos.',
        accept: function (a, b) {
          return b()
        },
        init: function () {
          return g
        },
        forceFallback: !1,
        fallback: function () {
          var a, b, d, e, f, g
          for (this.element.className = '' + this.element.className + ' dz-browser-not-supported', g = this.element.getElementsByTagName('div'), e = 0, f = g.length; f > e; e++) a = g[e], /(^| )dz-message($| )/.test(a.className) && (b = a, a.className = 'dz-message')
          return b || (b = c.createElement('<div class="dz-message"><span></span></div>'), this.element.appendChild(b)), d = b.getElementsByTagName('span')[0], d && (d.textContent != null ? d.textContent = this.options.dictFallbackMessage : d.innerText != null && (d.innerText = this.options.dictFallbackMessage)), this.element.appendChild(this.getFallbackForm())
        },
        resize: function (a) {
          var b, c, d
          return b = {
            srcX: 0,
            srcY: 0,
            srcWidth: a.width,
            srcHeight: a.height
          }, c = a.width / a.height, b.optWidth = this.options.thumbnailWidth, b.optHeight = this.options.thumbnailHeight, b.optWidth == null && b.optHeight == null ? (b.optWidth = b.srcWidth, b.optHeight = b.srcHeight) : b.optWidth == null ? b.optWidth = c * b.optHeight : b.optHeight == null && (b.optHeight = 1 / c * b.optWidth), d = b.optWidth / b.optHeight, a.height < b.optHeight || a.width < b.optWidth ? (b.trgHeight = b.srcHeight, b.trgWidth = b.srcWidth) : c > d ? (b.srcHeight = a.height, b.srcWidth = b.srcHeight * d) : (b.srcWidth = a.width, b.srcHeight = b.srcWidth / d), b.srcX = (a.width - b.srcWidth) / 2, b.srcY = (a.height - b.srcHeight) / 2, b
        },
        drop: function () {
          return this.element.classList.remove('dz-drag-hover')
        },
        dragstart: g,
        dragend: function () {
          return this.element.classList.remove('dz-drag-hover')
        },
        dragenter: function () {
          return this.element.classList.add('dz-drag-hover')
        },
        dragover: function () {
          return this.element.classList.add('dz-drag-hover')
        },
        dragleave: function () {
          return this.element.classList.remove('dz-drag-hover')
        },
        paste: g,
        reset: function () {
          return this.element.classList.remove('dz-started')
        },
        addedfile: function (a) {
          var b, d, e, f, g, h, i, j, k, l, m, n, o
          if (this.element === this.previewsContainer && this.element.classList.add('dz-started'), this.previewsContainer) {
            for (a.previewElement = c.createElement(this.options.previewTemplate.trim()), a.previewTemplate = a.previewElement, this.previewsContainer.appendChild(a.previewElement), l = a.previewElement.querySelectorAll('[data-dz-name]'), f = 0, i = l.length; i > f; f++) b = l[f], b.textContent = this._renameFilename(a.name)
            for (m = a.previewElement.querySelectorAll('[data-dz-size]'), g = 0, j = m.length; j > g; g++) b = m[g], b.innerHTML = this.filesize(a.size)
            for (this.options.addRemoveLinks && (a._removeLink = c.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>' + this.options.dictRemoveFile + '</a>'), a.previewElement.appendChild(a._removeLink)), d = (function (b) {
              return function (d) {
                return d.preventDefault(), d.stopPropagation(), a.status === c.UPLOADING ? c.confirm(b.options.dictCancelUploadConfirmation, function () {
                  return b.removeFile(a)
                }) : b.options.dictRemoveFileConfirmation ? c.confirm(b.options.dictRemoveFileConfirmation, function () {
                  return b.removeFile(a)
                }) : b.removeFile(a)
              }
            }(this)), n = a.previewElement.querySelectorAll('[data-dz-remove]'), o = [], h = 0, k = n.length; k > h; h++) e = n[h], o.push(e.addEventListener('click', d))
            return o
          }
        },
        removedfile: function (a) {
          var b
          return a.previewElement && (b = a.previewElement) != null && b.parentNode.removeChild(a.previewElement), this._updateMaxFilesReachedClass()
        },
        thumbnail: function (a, b) {
          var c, d, e, f
          if (a.previewElement) {
            for (a.previewElement.classList.remove('dz-file-preview'), f = a.previewElement.querySelectorAll('[data-dz-thumbnail]'), d = 0, e = f.length; e > d; d++) c = f[d], c.alt = a.name, c.src = b
            return setTimeout((function () {
              return function () {
                return a.previewElement.classList.add('dz-image-preview')
              }
            }(this)), 1)
          }
        },
        error: function (a, b) {
          var c, d, e, f, g
          if (a.previewElement) {
            for (a.previewElement.classList.add('dz-error'), typeof b !== 'String' && b.error && (b = b.error), f = a.previewElement.querySelectorAll('[data-dz-errormessage]'), g = [], d = 0, e = f.length; e > d; d++) c = f[d], g.push(c.textContent = b)
            return g
          }
        },
        errormultiple: g,
        processing: function (a) {
          return a.previewElement && (a.previewElement.classList.add('dz-processing'), a._removeLink) ? a._removeLink.textContent = this.options.dictCancelUpload : void 0
        },
        processingmultiple: g,
        uploadprogress: function (a, b) {
          var c, d, e, f, g
          if (a.previewElement) {
            for (f = a.previewElement.querySelectorAll('[data-dz-uploadprogress]'), g = [], d = 0, e = f.length; e > d; d++) c = f[d], g.push(c.nodeName === 'PROGRESS' ? c.value = b : c.style.width = '' + b + '%')
            return g
          }
        },
        totaluploadprogress: g,
        sending: g,
        sendingmultiple: g,
        success: function (a) {
          return a.previewElement ? a.previewElement.classList.add('dz-success') : void 0
        },
        successmultiple: g,
        canceled: function (a) {
          return this.emit('error', a, 'Upload canceled.')
        },
        canceledmultiple: g,
        complete: function (a) {
          return a._removeLink && (a._removeLink.textContent = this.options.dictRemoveFile), a.previewElement ? a.previewElement.classList.add('dz-complete') : void 0
        },
        completemultiple: g,
        maxfilesexceeded: g,
        maxfilesreached: g,
        queuecomplete: g,
        addedfiles: g,
        previewTemplate: '<div class="dz-preview dz-file-preview">\n  <div class="dz-image"><img data-dz-thumbnail /></div>\n  <div class="dz-details">\n    <div class="dz-size"><span data-dz-size></span></div>\n    <div class="dz-filename"><span data-dz-name></span></div>\n  </div>\n  <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n  <div class="dz-error-message"><span data-dz-errormessage></span></div>\n  <div class="dz-success-mark">\n    <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n      <title>Check</title>\n      <defs></defs>\n      <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n        <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>\n      </g>\n    </svg>\n  </div>\n  <div class="dz-error-mark">\n    <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n      <title>Error</title>\n      <defs></defs>\n      <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n        <g id="Check-+-Oval-2" sketch:type="MSLayerGroup" stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n          <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" sketch:type="MSShapeGroup"></path>\n        </g>\n      </g>\n    </svg>\n  </div>\n</div>'
      }, d = function () {
        var a, b, c, d, e, f, g
        for (d = arguments[0], c = arguments.length >= 2 ? i.call(arguments, 1) : [], f = 0, g = c.length; g > f; f++) {
          b = c[f]
          for (a in b) e = b[a], d[a] = e
        }
        return d
      }, c.prototype.getAcceptedFiles = function () {
        var a, b, c, d, e
        for (d = this.files, e = [], b = 0, c = d.length; c > b; b++) a = d[b], a.accepted && e.push(a)
        return e
      }, c.prototype.getRejectedFiles = function () {
        var a, b, c, d, e
        for (d = this.files, e = [], b = 0, c = d.length; c > b; b++) a = d[b], a.accepted || e.push(a)
        return e
      }, c.prototype.getFilesWithStatus = function (a) {
        var b, c, d, e, f
        for (e = this.files, f = [], c = 0, d = e.length; d > c; c++) b = e[c], b.status === a && f.push(b)
        return f
      }, c.prototype.getQueuedFiles = function () {
        return this.getFilesWithStatus(c.QUEUED)
      }, c.prototype.getUploadingFiles = function () {
        return this.getFilesWithStatus(c.UPLOADING)
      }, c.prototype.getAddedFiles = function () {
        return this.getFilesWithStatus(c.ADDED)
      }, c.prototype.getActiveFiles = function () {
        var a, b, d, e, f
        for (e = this.files, f = [], b = 0, d = e.length; d > b; b++) a = e[b], (a.status === c.UPLOADING || a.status === c.QUEUED) && f.push(a)
        return f
      }, c.prototype.init = function () {
        var a, b, d, e, f, g, h
        for (this.element.tagName === 'form' && this.element.setAttribute('enctype', 'multipart/form-data'), this.element.classList.contains('dropzone') && !this.element.querySelector('.dz-message') && this.element.appendChild(c.createElement('<div class="dz-default dz-message"><span>' + this.options.dictDefaultMessage + '</span></div>')), this.clickableElements.length && (d = (function (a) {
          return function () {
            return a.hiddenFileInput && a.hiddenFileInput.parentNode.removeChild(a.hiddenFileInput), a.hiddenFileInput = document.createElement('input'), a.hiddenFileInput.setAttribute('type', 'file'), (a.options.maxFiles == null || a.options.maxFiles > 1) && a.hiddenFileInput.setAttribute('multiple', 'multiple'), a.hiddenFileInput.className = 'dz-hidden-input', a.options.acceptedFiles != null && a.hiddenFileInput.setAttribute('accept', a.options.acceptedFiles), a.options.capture != null && a.hiddenFileInput.setAttribute('capture', a.options.capture), a.hiddenFileInput.style.visibility = 'hidden', a.hiddenFileInput.style.position = 'absolute', a.hiddenFileInput.style.top = '0', a.hiddenFileInput.style.left = '0', a.hiddenFileInput.style.height = '0', a.hiddenFileInput.style.width = '0', document.querySelector(a.options.hiddenInputContainer).appendChild(a.hiddenFileInput), a.hiddenFileInput.addEventListener('change', function () {
              var b, c, e, f
              if (c = a.hiddenFileInput.files, c.length) { for (e = 0, f = c.length; f > e; e++) b = c[e], a.addFile(b) }
              return a.emit('addedfiles', c), d()
            })
          }
        }(this)))(), this.URL = (g = window.URL) != null ? g : window.webkitURL, h = this.events, e = 0, f = h.length; f > e; e++) a = h[e], this.on(a, this.options[a])
        return this.on('uploadprogress', (function (a) {
          return function () {
            return a.updateTotalUploadProgress()
          }
        }(this))), this.on('removedfile', (function (a) {
          return function () {
            return a.updateTotalUploadProgress()
          }
        }(this))), this.on('canceled', (function (a) {
          return function (b) {
            return a.emit('complete', b)
          }
        }(this))), this.on('complete', (function (a) {
          return function () {
            return a.getAddedFiles().length === 0 && a.getUploadingFiles().length === 0 && a.getQueuedFiles().length === 0 ? setTimeout(function () {
              return a.emit('queuecomplete')
            }, 0) : void 0
          }
        }(this))), b = function (a) {
          return a.stopPropagation(), a.preventDefault ? a.preventDefault() : a.returnValue = !1
        }, this.listeners = [{
          element: this.element,
          events: {
            dragstart: (function (a) {
              return function (b) {
                return a.emit('dragstart', b)
              }
            }(this)),
            dragenter: (function (a) {
              return function (c) {
                return b(c), a.emit('dragenter', c)
              }
            }(this)),
            dragover: (function (a) {
              return function (c) {
                var d
                try {
                  d = c.dataTransfer.effectAllowed
                } catch (e) {}
                return c.dataTransfer.dropEffect = d === 'move' || d === 'linkMove' ? 'move' : 'copy', b(c), a.emit('dragover', c)
              }
            }(this)),
            dragleave: (function (a) {
              return function (b) {
                return a.emit('dragleave', b)
              }
            }(this)),
            drop: (function (a) {
              return function (c) {
                return b(c), a.drop(c)
              }
            }(this)),
            dragend: (function (a) {
              return function (b) {
                return a.emit('dragend', b)
              }
            }(this))
          }
        }], this.clickableElements.forEach(function (a) {
          return function (b) {
            return a.listeners.push({
              element: b,
              events: {
                click: function (d) {
                  return (b !== a.element || d.target === a.element || c.elementInside(d.target, a.element.querySelector('.dz-message'))) && a.hiddenFileInput.click(), !0
                }
              }
            })
          }
        }(this)), this.enable(), this.options.init.call(this)
      }, c.prototype.destroy = function () {
        var a
        return this.disable(), this.removeAllFiles(!0), ((a = this.hiddenFileInput) != null ? a.parentNode : void 0) && (this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput), this.hiddenFileInput = null), delete this.element.dropzone, c.instances.splice(c.instances.indexOf(this), 1)
      }, c.prototype.updateTotalUploadProgress = function () {
        var a, b, c, d, e, f, g, h
        if (d = 0, c = 0, a = this.getActiveFiles(), a.length) {
          for (h = this.getActiveFiles(), f = 0, g = h.length; g > f; f++) b = h[f], d += b.upload.bytesSent, c += b.upload.total
          e = 100 * d / c
        } else e = 100
        return this.emit('totaluploadprogress', e, c, d)
      }, c.prototype._getParamName = function (a) {
        return typeof this.options.paramName === 'function' ? this.options.paramName(a) : '' + this.options.paramName + (this.options.uploadMultiple ? '[' + a + ']' : '')
      }, c.prototype._renameFilename = function (a) {
        return typeof this.options.renameFilename !== 'function' ? a : this.options.renameFilename(a)
      }, c.prototype.getFallbackForm = function () {
        var a, b, d, e
        return (a = this.getExistingFallback()) ? a : (d = '<div class="dz-fallback">', this.options.dictFallbackText && (d += '<p>' + this.options.dictFallbackText + '</p>'), d += '<input type="file" name="' + this._getParamName(0) + '" ' + (this.options.uploadMultiple ? 'multiple="multiple"' : void 0) + ' /><input type="submit" value="Upload!"></div>', b = c.createElement(d), this.element.tagName !== 'FORM' ? (e = c.createElement('<form action="' + this.options.url + '" enctype="multipart/form-data" method="' + this.options.method + '"></form>'), e.appendChild(b)) : (this.element.setAttribute('enctype', 'multipart/form-data'), this.element.setAttribute('method', this.options.method)), e != null ? e : b)
      }, c.prototype.getExistingFallback = function () {
        var a, b, c, d, e, f
        for (b = function (a) {
          var b, c, d
          for (c = 0, d = a.length; d > c; c++) { if (b = a[c], /(^| )fallback($| )/.test(b.className)) return b }
        }, f = ['div', 'form'], d = 0, e = f.length; e > d; d++) { if (c = f[d], a = b(this.element.getElementsByTagName(c))) return a }
      }, c.prototype.setupEventListeners = function () {
        var a, b, c, d, e, f, g
        for (f = this.listeners, g = [], d = 0, e = f.length; e > d; d++) {
          a = f[d], g.push(function () {
            var d, e
            d = a.events, e = []
            for (b in d) c = d[b], e.push(a.element.addEventListener(b, c, !1))
            return e
          }())
        }
        return g
      }, c.prototype.removeEventListeners = function () {
        var a, b, c, d, e, f, g
        for (f = this.listeners, g = [], d = 0, e = f.length; e > d; d++) {
          a = f[d], g.push(function () {
            var d, e
            d = a.events, e = []
            for (b in d) c = d[b], e.push(a.element.removeEventListener(b, c, !1))
            return e
          }())
        }
        return g
      }, c.prototype.disable = function () {
        var a, b, c, d, e
        for (this.clickableElements.forEach(function (a) {
          return a.classList.remove('dz-clickable')
        }), this.removeEventListeners(), d = this.files, e = [], b = 0, c = d.length; c > b; b++) a = d[b], e.push(this.cancelUpload(a))
        return e
      }, c.prototype.enable = function () {
        return this.clickableElements.forEach(function (a) {
          return a.classList.add('dz-clickable')
        }), this.setupEventListeners()
      }, c.prototype.filesize = function (a) {
        var b, c, d, e, f, g, h, i
        if (d = 0, e = 'b', a > 0) {
          for (g = ['TB', 'GB', 'MB', 'KB', 'b'], c = h = 0, i = g.length; i > h; c = ++h) {
            if (f = g[c], b = Math.pow(this.options.filesizeBase, 4 - c) / 10, a >= b) {
              d = a / Math.pow(this.options.filesizeBase, 4 - c), e = f
              break
            }
          }
          d = Math.round(10 * d) / 10
        }
        return '<strong>' + d + '</strong> ' + e
      }, c.prototype._updateMaxFilesReachedClass = function () {
        return this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles ? (this.getAcceptedFiles().length === this.options.maxFiles && this.emit('maxfilesreached', this.files), this.element.classList.add('dz-max-files-reached')) : this.element.classList.remove('dz-max-files-reached')
      }, c.prototype.drop = function (a) {
        var b, c
        a.dataTransfer && (this.emit('drop', a), b = a.dataTransfer.files, this.emit('addedfiles', b), b.length && (c = a.dataTransfer.items, c && c.length && c[0].webkitGetAsEntry != null ? this._addFilesFromItems(c) : this.handleFiles(b)))
      }, c.prototype.paste = function (a) {
        var b, c
        if ((a != null && (c = a.clipboardData) != null ? c.items : void 0) != null) return this.emit('paste', a), b = a.clipboardData.items, b.length ? this._addFilesFromItems(b) : void 0
      }, c.prototype.handleFiles = function (a) {
        var b, c, d, e
        for (e = [], c = 0, d = a.length; d > c; c++) b = a[c], e.push(this.addFile(b))
        return e
      }, c.prototype._addFilesFromItems = function (a) {
        var b, c, d, e, f
        for (f = [], d = 0, e = a.length; e > d; d++) c = a[d], f.push(c.webkitGetAsEntry != null && (b = c.webkitGetAsEntry()) ? b.isFile ? this.addFile(c.getAsFile()) : b.isDirectory ? this._addFilesFromDirectory(b, b.name) : void 0 : c.getAsFile != null ? c.kind == null || c.kind === 'file' ? this.addFile(c.getAsFile()) : void 0 : void 0)
        return f
      }, c.prototype._addFilesFromDirectory = function (a, b) {
        var c, d, e
        return c = a.createReader(), d = function (a) {
          return typeof console !== 'undefined' && console !== null && typeof console.log === 'function' ? console.log(a) : void 0
        }, (e = (function (a) {
          return function () {
            return c.readEntries(function (c) {
              var d, f, g
              if (c.length > 0) {
                for (f = 0, g = c.length; g > f; f++) {
                  d = c[f], d.isFile ? d.file(function (c) {
                    return a.options.ignoreHiddenFiles && c.name.substring(0, 1) === '.' ? void 0 : (c.fullPath = '' + b + '/' + c.name, a.addFile(c))
                  }) : d.isDirectory && a._addFilesFromDirectory(d, '' + b + '/' + d.name)
                }
                e()
              }
              return null
            }, d)
          }
        }(this)))()
      }, c.prototype.accept = function (a, b) {
        return a.size > 1024 * this.options.maxFilesize * 1024 ? b(this.options.dictFileTooBig.replace('{{filesize}}', Math.round(a.size / 1024 / 10.24) / 100).replace('{{maxFilesize}}', this.options.maxFilesize)) : c.isValidFile(a, this.options.acceptedFiles) ? this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles ? (b(this.options.dictMaxFilesExceeded.replace('{{maxFiles}}', this.options.maxFiles)), this.emit('maxfilesexceeded', a)) : this.options.accept.call(this, a, b) : b(this.options.dictInvalidFileType)
      }, c.prototype.addFile = function (a) {
        return a.upload = {
          progress: 0,
          total: a.size,
          bytesSent: 0
        }, this.files.push(a), a.status = c.ADDED, this.emit('addedfile', a), this._enqueueThumbnail(a), this.accept(a, (function (b) {
          return function (c) {
            return c ? (a.accepted = !1, b._errorProcessing([a], c)) : (a.accepted = !0, b.options.autoQueue && b.enqueueFile(a)), b._updateMaxFilesReachedClass()
          }
        }(this)))
      }, c.prototype.enqueueFiles = function (a) {
        var b, c, d
        for (c = 0, d = a.length; d > c; c++) b = a[c], this.enqueueFile(b)
        return null
      }, c.prototype.enqueueFile = function (a) {
        if (a.status !== c.ADDED || a.accepted !== !0) throw new Error("This file can't be queued because it has already been processed or was rejected.")
        return a.status = c.QUEUED, this.options.autoProcessQueue ? setTimeout((function (a) {
          return function () {
            return a.processQueue()
          }
        }(this)), 0) : void 0
      }, c.prototype._thumbnailQueue = [], c.prototype._processingThumbnail = !1, c.prototype._enqueueThumbnail = function (a) {
        return this.options.createImageThumbnails && a.type.match(/image.*/) && a.size <= 1024 * this.options.maxThumbnailFilesize * 1024 ? (this._thumbnailQueue.push(a), setTimeout((function (a) {
          return function () {
            return a._processThumbnailQueue()
          }
        }(this)), 0)) : void 0
      }, c.prototype._processThumbnailQueue = function () {
        return this._processingThumbnail || this._thumbnailQueue.length === 0 ? void 0 : (this._processingThumbnail = !0, this.createThumbnail(this._thumbnailQueue.shift(), (function (a) {
          return function () {
            return a._processingThumbnail = !1, a._processThumbnailQueue()
          }
        }(this))))
      }, c.prototype.removeFile = function (a) {
        return a.status === c.UPLOADING && this.cancelUpload(a), this.files = h(this.files, a), this.emit('removedfile', a), this.files.length === 0 ? this.emit('reset') : void 0
      }, c.prototype.removeAllFiles = function (a) {
        var b, d, e, f
        for (a == null && (a = !1), f = this.files.slice(), d = 0, e = f.length; e > d; d++) b = f[d], (b.status !== c.UPLOADING || a) && this.removeFile(b)
        return null
      }, c.prototype.createThumbnail = function (a, b) {
        var c
        return c = new FileReader(), c.onload = (function (d) {
          return function () {
            return a.type === 'image/svg+xml' ? (d.emit('thumbnail', a, c.result), void (b != null && b())) : d.createThumbnailFromUrl(a, c.result, b)
          }
        }(this)), c.readAsDataURL(a)
      }, c.prototype.createThumbnailFromUrl = function (a, b, c, d) {
        var e
        return e = document.createElement('img'), d && (e.crossOrigin = d), e.onload = (function (b) {
          return function () {
            var d, g, h, i, j, k, l, m
            return a.width = e.width, a.height = e.height, h = b.options.resize.call(b, a), h.trgWidth == null && (h.trgWidth = h.optWidth), h.trgHeight == null && (h.trgHeight = h.optHeight), d = document.createElement('canvas'), g = d.getContext('2d'), d.width = h.trgWidth, d.height = h.trgHeight, f(g, e, (j = h.srcX) != null ? j : 0, (k = h.srcY) != null ? k : 0, h.srcWidth, h.srcHeight, (l = h.trgX) != null ? l : 0, (m = h.trgY) != null ? m : 0, h.trgWidth, h.trgHeight), i = d.toDataURL('image/png'), b.emit('thumbnail', a, i), c != null ? c() : void 0
          }
        }(this)), c != null && (e.onerror = c), e.src = b
      }, c.prototype.processQueue = function () {
        var a, b, c, d
        if (b = this.options.parallelUploads, c = this.getUploadingFiles().length, a = c, !(c >= b) && (d = this.getQueuedFiles(), d.length > 0)) {
          if (this.options.uploadMultiple) return this.processFiles(d.slice(0, b - c))
          for (; b > a;) {
            if (!d.length) return
            this.processFile(d.shift()), a++
          }
        }
      }, c.prototype.processFile = function (a) {
        return this.processFiles([a])
      }, c.prototype.processFiles = function (a) {
        var b, d, e
        for (d = 0, e = a.length; e > d; d++) b = a[d], b.processing = !0, b.status = c.UPLOADING, this.emit('processing', b)
        return this.options.uploadMultiple && this.emit('processingmultiple', a), this.uploadFiles(a)
      }, c.prototype._getFilesWithXhr = function (a) {
        var b, c
        return c = (function () {
          var c, d, e, f
          for (e = this.files, f = [], c = 0, d = e.length; d > c; c++) b = e[c], b.xhr === a && f.push(b)
          return f
        }.call(this))
      }, c.prototype.cancelUpload = function (a) {
        var b, d, e, f, g, h, i
        if (a.status === c.UPLOADING) {
          for (d = this._getFilesWithXhr(a.xhr), e = 0, g = d.length; g > e; e++) b = d[e], b.status = c.CANCELED
          for (a.xhr.abort(), f = 0, h = d.length; h > f; f++) b = d[f], this.emit('canceled', b)
          this.options.uploadMultiple && this.emit('canceledmultiple', d)
        } else ((i = a.status) === c.ADDED || i === c.QUEUED) && (a.status = c.CANCELED, this.emit('canceled', a), this.options.uploadMultiple && this.emit('canceledmultiple', [a]))
        return this.options.autoProcessQueue ? this.processQueue() : void 0
      }, e = function () {
        var a, b
        return b = arguments[0], a = arguments.length >= 2 ? i.call(arguments, 1) : [], typeof b === 'function' ? b.apply(this, a) : b
      }, c.prototype.uploadFile = function (a) {
        return this.uploadFiles([a])
      }, c.prototype.uploadFiles = function (a) {
        var b, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L
        for (w = new XMLHttpRequest(), x = 0, B = a.length; B > x; x++) b = a[x], b.xhr = w
        p = e(this.options.method, a), u = e(this.options.url, a), w.open(p, u, !0), w.withCredentials = !!this.options.withCredentials, s = null, g = (function (c) {
          return function () {
            var d, e, f
            for (f = [], d = 0, e = a.length; e > d; d++) b = a[d], f.push(c._errorProcessing(a, s || c.options.dictResponseError.replace('{{statusCode}}', w.status), w))
            return f
          }
        }(this)), t = (function (c) {
          return function (d) {
            var e, f, g, h, i, j, k, l, m
            if (d != null) {
              for (f = 100 * d.loaded / d.total, g = 0, j = a.length; j > g; g++) {
                b = a[g], b.upload = {
                  progress: f,
                  total: d.total,
                  bytesSent: d.loaded
                }
              }
            } else {
              for (e = !0, f = 100, h = 0, k = a.length; k > h; h++) b = a[h], (b.upload.progress !== 100 || b.upload.bytesSent !== b.upload.total) && (e = !1), b.upload.progress = f, b.upload.bytesSent = b.upload.total
              if (e) return
            }
            for (m = [], i = 0, l = a.length; l > i; i++) b = a[i], m.push(c.emit('uploadprogress', b, f, b.upload.bytesSent))
            return m
          }
        }(this)), w.onload = (function (b) {
          return function (d) {
            var e
            if (a[0].status !== c.CANCELED && w.readyState === 4) {
              if (s = w.responseText, w.getResponseHeader('content-type') && ~w.getResponseHeader('content-type').indexOf('application/json')) {
                try {
                  s = JSON.parse(s)
                } catch (f) {
                  d = f, s = 'Invalid JSON response from server.'
                }
              }
              return t(), (e = w.status) >= 200 && e < 300 ? b._finished(a, s, d) : g()
            }
          }
        }(this)), w.onerror = (function () {
          return function () {
            return a[0].status !== c.CANCELED ? g() : void 0
          }
        }(this)), r = (G = w.upload) != null ? G : w, r.onprogress = t, j = {
          Accept: 'application/json',
          'Cache-Control': 'no-cache',
          'X-Requested-With': 'XMLHttpRequest'
        }, this.options.headers && d(j, this.options.headers)
        for (h in j) i = j[h], i && w.setRequestHeader(h, i)
        if (f = new FormData(), this.options.params) {
          H = this.options.params
          for (o in H) v = H[o], f.append(o, v)
        }
        for (y = 0, C = a.length; C > y; y++) b = a[y], this.emit('sending', b, w, f)
        if (this.options.uploadMultiple && this.emit('sendingmultiple', a, w, f), this.element.tagName === 'FORM') {
          for (I = this.element.querySelectorAll('input, textarea, select, button'), z = 0, D = I.length; D > z; z++) {
            if (l = I[z], m = l.getAttribute('name'), n = l.getAttribute('type'), l.tagName === 'SELECT' && l.hasAttribute('multiple')) { for (J = l.options, A = 0, E = J.length; E > A; A++) q = J[A], q.selected && f.append(m, q.value) } else (!n || (K = n.toLowerCase()) !== 'checkbox' && K !== 'radio' || l.checked) && f.append(m, l.value)
          }
        }
        for (k = F = 0, L = a.length - 1; L >= 0 ? L >= F : F >= L; k = L >= 0 ? ++F : --F) f.append(this._getParamName(k), a[k], this._renameFilename(a[k].name))
        return this.submitRequest(w, f, a)
      }, c.prototype.submitRequest = function (a, b) {
        return a.send(b)
      }, c.prototype._finished = function (a, b, d) {
        var e, f, g
        for (f = 0, g = a.length; g > f; f++) e = a[f], e.status = c.SUCCESS, this.emit('success', e, b, d), this.emit('complete', e)
        return this.options.uploadMultiple && (this.emit('successmultiple', a, b, d), this.emit('completemultiple', a)), this.options.autoProcessQueue ? this.processQueue() : void 0
      }, c.prototype._errorProcessing = function (a, b, d) {
        var e, f, g
        for (f = 0, g = a.length; g > f; f++) e = a[f], e.status = c.ERROR, this.emit('error', e, b, d), this.emit('complete', e)
        return this.options.uploadMultiple && (this.emit('errormultiple', a, b, d), this.emit('completemultiple', a)), this.options.autoProcessQueue ? this.processQueue() : void 0
      }, c
    }(b)), a.version = '4.3.0', a.options = {}, a.optionsForElement = function (b) {
      return b.getAttribute('id') ? a.options[c(b.getAttribute('id'))] : void 0
    }, a.instances = [], a.forElement = function (a) {
      if (typeof a === 'string' && (a = document.querySelector(a)), (a != null ? a.dropzone : void 0) == null) throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.")
      return a.dropzone
    }, a.autoDiscover = !0, a.discover = function () {
      var b, c, d, e, f, g
      for (document.querySelectorAll ? d = document.querySelectorAll('.dropzone') : (d = [], b = function (a) {
        var b, c, e, f
        for (f = [], c = 0, e = a.length; e > c; c++) b = a[c], f.push(/(^| )dropzone($| )/.test(b.className) ? d.push(b) : void 0)
        return f
      }, b(document.getElementsByTagName('div')), b(document.getElementsByTagName('form'))), g = [], e = 0, f = d.length; f > e; e++) c = d[e], g.push(a.optionsForElement(c) !== !1 ? new a(c) : void 0)
      return g
    }, a.blacklistedBrowsers = [/opera.*Macintosh.*version\/12/i], a.isBrowserSupported = function () {
      var b, c, d, e, f
      if (b = !0, window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {
        if ('classList' in document.createElement('a')) { for (f = a.blacklistedBrowsers, d = 0, e = f.length; e > d; d++) c = f[d], c.test(navigator.userAgent) && (b = !1) } else b = !1
      } else b = !1
      return b
    }, h = function (a, b) {
      var c, d, e, f
      for (f = [], d = 0, e = a.length; e > d; d++) c = a[d], c !== b && f.push(c)
      return f
    }, c = function (a) {
      return a.replace(/[\-_](\w)/g, function (a) {
        return a.charAt(1).toUpperCase()
      })
    }, a.createElement = function (a) {
      var b
      return b = document.createElement('div'), b.innerHTML = a, b.childNodes[0]
    }, a.elementInside = function (a, b) {
      if (a === b) return !0
      for (; a = a.parentNode;) { if (a === b) return !0 }
      return !1
    }, a.getElement = function (a, b) {
      var c
      if (typeof a === 'string' ? c = document.querySelector(a) : a.nodeType != null && (c = a), c == null) throw new Error('Invalid `' + b + '` option provided. Please provide a CSS selector or a plain HTML element.')
      return c
    }, a.getElements = function (a, b) {
      var c, d, e, f, g, h, i, j
      if (a instanceof Array) {
        e = []
        try {
          for (f = 0, h = a.length; h > f; f++) d = a[f], e.push(this.getElement(d, b))
        } catch (k) {
          c = k, e = null
        }
      } else if (typeof a === 'string') { for (e = [], j = document.querySelectorAll(a), g = 0, i = j.length; i > g; g++) d = j[g], e.push(d) } else a.nodeType != null && (e = [a])
      if (e == null || !e.length) throw new Error('Invalid `' + b + '` option provided. Please provide a CSS selector, a plain HTML element or a list of those.')
      return e
    }, a.confirm = function (a, b, c) {
      return window.confirm(a) ? b() : c != null ? c() : void 0
    }, a.isValidFile = function (a, b) {
      var c, d, e, f, g
      if (!b) return !0
      for (b = b.split(','), d = a.type, c = d.replace(/\/.*$/, ''), f = 0, g = b.length; g > f; f++) {
        if (e = b[f], e = e.trim(), e.charAt(0) === '.') {
          if (a.name.toLowerCase().indexOf(e.toLowerCase(), a.name.length - e.length) !== -1) return !0
        } else if (/\/\*$/.test(e)) {
          if (c === e.replace(/\/.*$/, '')) return !0
        } else if (d === e) return !0
      }
      return !1
    }, typeof jQuery !== 'undefined' && jQuery !== null && (jQuery.fn.dropzone = function (b) {
      return this.each(function () {
        return new a(this, b)
      })
    }), typeof module !== 'undefined' && module !== null ? module.exports = a : window.Dropzone = a, a.ADDED = 'added', a.QUEUED = 'queued', a.ACCEPTED = a.QUEUED, a.UPLOADING = 'uploading', a.PROCESSING = a.UPLOADING, a.CANCELED = 'canceled', a.ERROR = 'error', a.SUCCESS = 'success', e = function (a) {
      var b, c, d, e, f, g, h, i, j, k
      for (h = a.naturalWidth, g = a.naturalHeight, c = document.createElement('canvas'), c.width = 1, c.height = g, d = c.getContext('2d'), d.drawImage(a, 0, 0), e = d.getImageData(0, 0, 1, g).data, k = 0, f = g, i = g; i > k;) b = e[4 * (i - 1) + 3], b === 0 ? f = i : k = i, i = f + k >> 1
      return j = i / g, j === 0 ? 1 : j
    }, f = function (a, b, c, d, f, g, h, i, j, k) {
      var l
      return l = e(b), a.drawImage(b, c, d, f, g, h, i, j, k / l)
    }, d = function (a, b) {
      var c, d, e, f, g, h, i, j, k
      if (e = !1, k = !0, d = a.document, j = d.documentElement, c = d.addEventListener ? 'addEventListener' : 'attachEvent', i = d.addEventListener ? 'removeEventListener' : 'detachEvent', h = d.addEventListener ? '' : 'on', f = function (c) {
        return c.type !== 'readystatechange' || d.readyState === 'complete' ? ((c.type === 'load' ? a : d)[i](h + c.type, f, !1), !e && (e = !0) ? b.call(a, c.type || c) : void 0) : void 0
      }, g = function () {
        var a
        try {
          j.doScroll('left')
        } catch (b) {
          return a = b, void setTimeout(g, 50)
        }
        return f('poll')
      }, d.readyState !== 'complete') {
        if (d.createEventObject && j.doScroll) {
          try {
            k = !a.frameElement
          } catch (l) {}
          k && g()
        }
        return d[c](h + 'DOMContentLoaded', f, !1), d[c](h + 'readystatechange', f, !1), a[c](h + 'load', f, !1)
      }
    }, a._autoDiscoverFunction = function () {
      return a.autoDiscover ? a.discover() : void 0
    }, d(window, a._autoDiscoverFunction)
  }).call(this)
  